2017-04-23 30 views
-1

我有一個名爲validate_account()的函數返回布爾值。它進入db,並進行一些操作,持續時間爲秒。所以,當我向服務器發出另一個請求時,它在這7秒內沒有響應任何請求。我該如何解決它?也許開始新的過程?方法執行服務器不響應7秒

@login_required 
@csrf_protect 
def check_account(request): 
    username = request.session['current_account'] 

    account = get_object_or_404(Account, username=username) 
    # takes 7 seconds 
    login_status = validate_account(account.username, account.password) 

    response = { 
     'loginStatus': login_status 
    } 

    response = json.dumps(response) 

    return JsonResponse(response, safe=False) 

我運行的服務器作爲python manage.py runserver --nothreading --noreload

+0

您是否嘗試優化validate_account()函數? – badiya

+0

@SurbhitWagle很遺憾,我無法優化它。我能以另一種方式做到嗎? –

+0

閱讀https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem。你的是經典的XY問題 – Sniper

回答

0

--nothreading選項禁止多線程,所以你只能有一個線程響應請求。由於每個線程同時處理請求,這會導致您描述的確切行爲。

只需刪除--nothreading選項,多線程將允許服務器同時響應多個請求。在生產中,您還應該使用多個線程和/或進程來運行WSGI服務器