Django无法处理并发请求?我哪里做错了

时间:2017-10-13 18:24:13

标签: python django web

我确定这是因为我做错了什么。

我用Django建立了一个网站。在模型中,我有一个子进程调用:

class MyModel:
    ...
    def foo(self):
        args = [......]
        pipe = subprocess.Popen(args, stdout=subproccess.PIPE, stderr=subprocess.PIPE)

在我看来:

def call_foo(request):
    my_model = MyModel()
    my_model.foo()

当我点击我的网站向这个call_foo()函数发送async get请求时,似乎我的应用程序无法处理其他请求。例如,如果我打开主页url,它会一直等待,直到foo()中的上述子进程调用完成后才会显示。

有谁知道我做错了什么?感谢

1 个答案:

答案 0 :(得分:0)

您使用的数据库是什么? Django使用数据库为每个线程创建一个连接,如果您的数据库在单个线程上运行或已满,则可能导致阻塞。

对于调试,我会尝试将您的子流程更改为需要很长时间(可能是睡眠和打印)的简单操作。看看是否仍然阻止。