方法执行服务器没有响应7秒

时间:2017-04-23 16:10:52

标签: python django multithreading python-3.x multiprocessing

我有一个名为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

运行服务器

1 个答案:

答案 0 :(得分:0)

--nothreading选项禁用多线程,因此您只有一个线程响应请求。由于每个线程都会同步处理请求,因此会导致您描述的确切行为。

只需删除--nothreading选项,多线程将允许服务器同时响应多个请求。在生产中,您还应该使用多个线程和/或进程来运行WSGI服务器