flask - Trabajador asincrónico en gunicornio parece estar bloqueando
gevent (1)
Estoy usando una aplicación Flask con el servidor de gunicorn y la clase gevent worker, que de acuerdo con la documentación de gunicorn es un trabajador asincrónico. Sin embargo, cuando lanzo gunicornio con un solo trabajador e intento hacer una petición larga (agregué el modo sleep(10)
en la función de ruta, pero en realidad esto también ocurre cuando proceso cargas grandes), no puedo hacer ninguna solicitud hasta que el el anterior está terminado. Se comporta como es un trabajador síncrono, una solicitud a la vez.
¿Es este el comportamiento normal? ¿Me falta algo sobre los trabajadores sincrónicos vs asincrónicos?
Si no usa el parche de sleep
(o usa la versión de bloqueo sin bloqueo de gevent
), un trabajador que bloquea bloquea todo el ciclo de eventos .
Llame a gevent.monkey.patch_all
(o más específicamente gevent.monkey.patch_time
) o reemplace su llamada a time.sleep
con gevent.sleep