Mi aplicación Django usa una API que es un servicio SOAP. Actualmente estoy usando un cliente python SOAP/WSDL llamado SUDS. Para usar la API, debo inicializar el cliente y proporcionarle un enlace al punto final, el inicio de sesión, la clave API y la contraseña.
Código simplificado que lo hace:
from suds.client import Client client = Client('link.to.WSDL.endpoint') session_id = client.service.a_log_in_service('api_key', 'login', 'password') # the session_id is required by all other 'client.service.xxx' servicesTodo funciona bien, aunque lleva algo de tiempo inicializar el cliente.
Ahora, cada vez que quiero enviar una solicitud a la API en una vista, debo inicializar el cliente. No veo ninguna forma de "compartir" el cliente ya inicializado entre muchas vistas. Sería genial tener el cliente en funcionamiento en algún lugar, para que cualquier usuario pueda enviar una solicitud de API usándolo.
Una vez que he iniciado sesión en una vista, puedo almacenar el session_id (en una sesión, db, archivo) y usarlo en otras vistas, pero el cliente aún debe inicializarse nuevamente, lo que significa descargar el 200- Archivo XML de la base de conocimientos.
Tener que descargar 200 KB cada vez que un usuario presiona un botón no parece correcto en absoluto. ¡Gracias por adelantado!