SORU
12 EKİM 2011, ÇARŞAMBA


Python SOAP İstemci - KÖPÜK ya da başka bir şey mi?

Şu anda varolan geniş SABUN yönetim API kullanacak olan bir istemci uygulama arıyorum.

pysimplesoap SUDS gibi farklı SOAP uygulamaları araştırdım. İlk sorunları recursions çok fazla olması WSDL ayrıştırma varken suds iyi çalıştı (ama yavaş) ve gerçekten modül gibi.

Ancak, yüksek bellek tüketimi gibi sabun köpüğü ile bazı sorunlar var gibi görünüyor, WSDL ayrıştırma hızını ve bazı WSDL öznitelikleri eksik destek (örn. seçim özniteliği).
İnsanlar aktif olarak hata raporları ve yamalar yapılıyor, bir sürü varken, 2010-09-15 üzerinde 0.4 beri SUDS no release vardı. Ayrıca, wiki ve yol haritası biraz ihmal bak.

Benim için SUDS artık korunur gibi görünüyor.

Yani burada benim soru:

  1. Sense soap istemci olarak köpüklü biradan daha büyük bir projenin temel yapar?
  2. Zaten yamalar bilet sistemi mevcut uygulayan köpüklü bir çatal var mı?
  3. Kullanılabilir, düşük bellek ayak izi var ve kullanımı kolay ve karmaşık büyük WSDL dosyalarını işleyebilir

[Güncelleme Kasım 2013]

İki yıldan fazla bir süre geçti ve özgün suds proje aslında ölü olduğu ortaya çıktı. 2010 yılından bu yana yeni baskıların olmuştur. Bu nedenle bir çok insan Debian orijinal suds paketi yamalı sürümleri bazı konuları düzeltmek için dağıtma gibi suds ve dağılımları çatallaşma başladı.

Başarılı bir şekilde kullanılan Jurko ... ... aktif olarak korunur çatal tavsiye edebilirim. Python 3 destekler ve suds' sorunları da bilinir. bir sürü adresleri Sürüm notları ve hata takip paketi yüklenmesi için de PyPI mevcuttur Bitbucket mevcut pip kullanıyor.

CEVAP
21 EKİM 2011, Cuma


Onaylı bir standart yok iken, eğer SABUN kullanmanız gerekiyorsa Suds en iyi seçimdir. Suds büyük wsdl'leri de yavaş olabilir ve üzerinde çalıştıkları bir şey.

Eğer WSDL sık sık değiştirmek için beklemiyorsun ama bu arada, çok süratli satın almak için iki seçeneğiniz vardır:

  1. WSDL localhost indirme
  2. Önbelleğe alma kullanarak

WSDL indirme

Büyük wsdl'leri de sorun parçası ilk havai ekleyebilirsiniz WSDL her zaman indirmek gerekir. Köpük ve başlangıçta tüm WSDL değişmedi emin olmak için indirme ayrıştırmak için zaman alacak.

Yerel sistem indirin ve Client kurucu URL file:// düzeni kullanarak geçiş yapabilirsiniz. Suds HTTP aktarımı için urllib2 kullandığından, bu tamamen yasal.

WSDL URL bir hostname veren sen değilsin, çünkü şimdi de location bir argüman SABUN uygulamanın gerçek URL belirtme geçmek zorunda kalacak.

İşte bir örnek:

from suds.client import Client

# The service URL
soap_url = 'http://myapp.example.notreal/path/to/soap'

# The WSDL URL, we wont' use this but just illustrating for example. This 
# would be the file you download to your system and save as wsdl_file
wsdl_url = 'http://myapp.example.notreal/path/to/soap?wsdl' 

# The full path to the downloaded WSDL file on your local system
wsdl_file = '/path/to/myapp.wsdl'
wsdl_url = 'file://'   wsdl_file # Override original wsdl_url

client = Client(url=wsdl_url, location=soap_url)

Eğer ilgileniyorsanız, benim işim bu yaklaşım kullanılan ve open sourced the code var.

WSDL önbelleğe alma

Diğer seçeneği Suds' excellent caching feature. Açıkça önbellek nesnesi oluşturun ve yapıcı cache değişken kullanmak için bu geçmesi gerekir. Aksi takdirde 1 gün süre ile ObjectCache bir varsayılan.

Ayrıca her iki yaklaşım kullanarak düşünebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • Diogo Oliveira

    Diogo Olivei

    4 HAZİRAN 2006
  • FF Radioo

    FF Radioo

    14 ŞUBAT 2007