我的django应用程序使用suds-jurko
库
from suds.client import Client try: URL = "http://192.168.12.11/xdwq/some_service.asmx?WSDL" client = Client(URL, timeout=30) except: # Fallback mode pass def get_data(ID): try: response = client.service.GetData(ID) data = response.diffgram.NewDataSet.master return data except: return None
在我的观点中
data = get_data(ID)
问题是该服务需要相当长的时间来初始化(~20秒)。后续请求最多需要3秒才能返回。每当请求页面时,webserver(带有mod_wsgi的apache)都需要花费很长时间来加载某些请求。
在我的apache配置中
WSGIDaemonProcess www.example.com user=hyde group=hyde threads=15 maximum-requests=10000
如何编写代码,以便apache(或django)可以共享SOAP服务的单个后台进程并最小化30秒的惩罚?
我一直在阅读有关芹菜和其他此类方法的内容,但我不确定如何继续。请指教。
答案 0 :(得分:0)
您必须使用纯python或某些第三方模块(例如芹菜,如上所述)创建单独的后台进程,并从django视图(例如使用unix或tcp套接字)与该进程通信。
同样不是WSGI,你可以使用不同的方法来提供将在内存中保留的django应用程序(gunicorn,uwsgi),但这是非常脏的解决方案,我不建议这样做。