Estoy ejecutando una aplicación Flask de computación pesada detrás de gunicorn. Las solicitudes son manejadas por Nginx que las pasa a gunicorn y la aplicación Flask:
gunicorn -access-logfile - wsgi --bind 127.0.0.1:5002 --workers 2 --threads 8Cada solicitud tarda aproximadamente 1 segundo en procesarse (con mucha CPU). Si llegan dos solicitudes seguidas, me gustaría que la segunda "esperara", mientras se procesa la primera. Pero, en cambio, parece que ambas solicitudes se vuelven más lentas a medida que la CPU intenta procesar ambas en paralelo.
¿Hay alguna forma de obligar a la aplicación a procesar las solicitudes entrantes de forma secuencial?
¡Gracias!
Puede usar python-filelock para lograr su objetivo, intente adquirir el mismo bloqueo en todos los procesos/subprocesos antes de ejecutar su código pesado de CPU.
Pero no estoy seguro de por qué usa --workers 2 --threads 8 . Esta respuesta a la pregunta "¿Cuántas solicitudes simultáneas recibe un solo proceso Flask?" , también podría proporcionar una respuesta a su caso de uso