2017-10-13 53 views
1

我確定這是因爲我做錯了什麼。Django無法處理併發請求?我在哪裏做錯了

我用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() 

當我點擊我的網站,它會發送異步get請求該call_foo()函數,它看起來像我應用程序無法處理其他請求。例如,如果我打開主頁url,它會一直等待,直到foo()中的上述子進程調用完成後纔會顯示。

有誰知道我做錯了什麼地方?謝謝

回答

0

你使用了哪個數據庫? Django使用數據庫爲每個線程創建一個連接,並且如果您的數據庫在單線程上運行或已滿,可能會導致阻塞。

對於調試,我會嘗試將您的子過程更改爲簡單,需要很長時間(可能睡覺和打印)的東西。看看是否仍然阻止。

+0

我正在使用SQL Server – Feiiiiiiiiiiiii