Bookmark and Share

Python Web Services

Python, SOAP e generazione automatica di codice Python a partire da WSDL e XML Schema.

by Davide Moro - 2009-01-29
Python Web Services

E'possibile far dialogare il nostro codice Python (e quindi anche il CMS Plone) con Web Services messi a disposizione da terze parti, magari implementati con altri linguaggi di programmazione. In questo modo è quindi possibile:

  • interfacciarsi con Web Services messi a disposizioni da terze parti (per esempio realizzando in Plone un sistema per l'invio di SMS appoggiandosi a provider professionali per quanto riguarda l'invio fisico ai destinatari)
  • far interagire la nostra applicazione con servizi rilasciati da Google, Amazon, PayPal per costruire complesse applicazioni distribuite in rete

Se non ti è chiaro il concetto di Web Services puoi fare riferimento ai seguenti link in rete:

Per quanto il linguaggio di programmazione Python esistono diversi progetti che consentono di costruire o interfacciarsi con dei Web Services di terze parti, come potrai vedere nella pagina relativa al "Python Web Services Project" raggiungibile al seguente link:

Uno dei package più interessanti tra quelli disponibili in Python è ZSI (http://pywebsvcs.sourceforge.net/zsi.html), che tra l'altro consente di generare automaticamente del codice Python a partire da un file WSDL (per intenderci dell'XML in grado di descrivere dei servizi Web e quindi in che modo possiamo interagire con essi). Il codice generato può essere utilizzato dalle nostre applicazioni. Vediamo come ciò sia possibile.

Qui di seguito creeremo un ambiente Python separato da quello di sistema ed installeremo ZSI con easy_install; altrimenti è comunque possibile installare ZSI senza virtualenv.

$ mkdir Python
$ cd Python
$ virtualenv --no-site-packages .
$ ./bin/easy_install ZSI

Con il successivo comando invece generiamo automaticamente il codice che ci consente di interagire con un'applicazione a partire da un file WSDL:

$ ./bin/wsdl2py -u http://URL/applicazioneService?wsdl

Come risultato verranno generati due moduli Python che potremo utilizzare nel nostro codice:

  • ApplicazioneService_services_types.py
  • ApplicazioneService_services.py

A questo punto utilizzando i file generati automaticamente, possiamo interagire con un servizio remoto, realizzando un sistema distribuito scrivendo pochissimo codice:

from ApplicazioneService_services import ApplicazioneServiceLocator
from ApplicazioneService_services import ApplicazioneSoapBindingSOAP
from ApplicazioneService_services import metodoRequest

locator = ApplicazioneServiceLocator()
locator_address = locator.getApplicazioneAddress()
service = ApplicazioneSoapBindingSOAP(locator_address)

send_request = metodoRequest()
send_request._param1 = '...'
send_request._param2 = '...
response = service.metodo(send_request)

# elaboro quanto ottenuto dalla response ....

Per concludere con poco sforzo siamo in grado di realizzare di applicazioni distribuite sfruttando servizi di rete forniti da terzi (come per esempio Google, Amazon o PayPal), indipendentemente dal linguaggio di programmazione con il quale sono stati implementati come per esempio Java o altri linguaggi diversi.

client SOAP

Posted by Davide Moro at 2010-06-28 17:58
Segnalo altri link più aggiornati:
* http://pypi.python.org/pypi/wsdl2interface
* http://redomino.com/it/labs/documentazione/tutorial/python-in-architetture-soa/tutorial-all-pages
* https://fedorahosted.org/suds/
* https://fedorahosted.org/suds/wiki/Documentation