Tengo una función nombrada como validate_account() que devuelve boolean. Va a db y realiza alguna manipulación con una duración de 7 segundos. Entonces, cuando hago otras solicitudes al servidor, no responde durante estos 7 segundos para ninguna solicitud. ¿Cómo puedo arreglarlo? ¿Quizás iniciando un nuevo proceso?
@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) Estoy ejecutando el servidor como python manage.py runserver --nothreading --noreload
La opción --nothreading desactiva los subprocesos múltiples, por lo que solo tendrá un subproceso que responda a las solicitudes. Dado que cada subproceso maneja las solicitudes de forma sincrónica, esto provoca el comportamiento exacto que describe.
Simplemente elimine la opción --nothreading y los subprocesos múltiples permitirán que el servidor responda a múltiples solicitudes al mismo tiempo. En producción, también debe usar múltiples subprocesos y/o procesos para ejecutar su servidor WSGI