[pyar] mejorar tiempo que instancia un cliente pysimplesoap

Mariano Reingart reingart en gmail.com
Mar Mayo 14 18:38:21 ART 2013


En general, la lentitud al analizar una descripción de servicio de un
webservice soap (WSDL) pueden ser dos cosas:
 * El tiempo que tarda en bajar el xml
 * El tiempo que tarda en parsearlo y generar las estructuras en python

Con pysimplesoap, debería ser más rápido porque no usa parsers xml
complejos, y como la descripción del servicio se parsea a una
estructura simple de diccionarios y listas, se puede serializar
rápidamente (picklear).
Usando el parámetro cache del constructor del cliente podes indicar el
directorio donde se almacena dicho archivo temporal.

Por ejemplo, podes ver el método Conectar de la clase WSLPG
(liquidacion de granos, java) o WSFEv1 (factura electrónica, .net):

https://code.google.com/p/pyafipws/source/browse/wslpg.py#354

https://code.google.com/p/pyafipws/source/browse/wsfev1.py#203

Básicamente sería:

from pysimplesoap.client import SoapClient
client = SoapClient(
            wsdl="https://fwshomo.afip.gov.ar/wslpg/LpgService?wsdl",
            cache="/tmp/",
    )

Te debería generar dos archivos en el directorio temporal (en este caso /tmp):

/tmp/362d74a5a4d3981a82fe09bdc787467a.xml: el wsdl original
/tmp/362d74a5a4d3981a82fe09bdc787467a.pkl: la estructura python

En este caso, los tiempos deberían bajar a:
sin cache: 6.05420303345 s (básicamente lo que tarda descargar el wsdl
de AFIP, 70Kb en este caso)
con cache: 0.00130701065063 s

Además, dependiendo del sistema operativo y demás, tenes más o menos
1.50 segundos para levantar python e importar los módulos y demás
(tendrías que aislar ese tema).
Te adjunto un programa mínimo de prueba, si queres ponele tu wsdl y
fijate cuanto te da.

Cualquier duda avisame,

Sds

Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com


2013/5/14 Ezequiel Marquez <exe.zaid en gmail.com>:
> me falto un 0, son 10000 lineas :)
>
>
> El 14 de mayo de 2013 17:42, Ezequiel Marquez <exe.zaid en gmail.com> escribió:
>
>> Hola a tod en s, tengo un problema con los tiempos que demora en instanciar
>> un cliente pysimplesoap, alrededor de 1.4 seg, también probé con suds y
>> demoro 4 seg.
>> el wsdl es bastante grande(1000 lineas) alguna idea?
>>
>>
>>
>> --
>> Ezequiel Marquez
>
>
>
>
> --
> Ezequiel Marquez
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: pysimplesoap_test.py
Type: application/octet-stream
Size: 379 bytes
Desc: no disponible
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130514/21d2bc1f/attachment.obj>


More information about the pyar mailing list