在django分享后台进程?

时间:2015-01-31 09:48:00

标签: python django soap suds

我的django应用程序使用suds-jurko

与SOAP服务进行通信
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秒的惩罚?

我一直在阅读有关芹菜和其他此类方法的内容,但我不确定如何继续。请指教。

1 个答案:

答案 0 :(得分:0)

您必须使用纯python或某些第三方模块(例如芹菜,如上所述)创建单独的后台进程,并从django视图(例如使用unix或tcp套接字)与该进程通信。

同样不是WSGI,你可以使用不同的方法来提供将在内存中保留的django应用程序(gunicorn,uwsgi),但这是非常脏的解决方案,我不建议这样做。