python - meaning - Manejar solicitudes de matraz simultáneamente con hilos=True
flask wikipedia (2)
¿Qué hace exactamente pasar
app.run()
threaded = True
a
app.run()
?
Mi aplicación procesa la entrada del usuario y toma un poco de tiempo hacerlo.
Durante este tiempo, la aplicación no puede manejar otras solicitudes.
He probado mi aplicación con
threaded=True
y me permite manejar múltiples solicitudes al mismo tiempo.
¿Cuántas solicitudes podrá manejar mi aplicación simultáneamente con esta declaración?
Esto depende drásticamente de su aplicación. Cada nueva solicitud tendrá un subproceso lanzado, depende de cuántos subprocesos pueda manejar su máquina. No veo una opción para limitar el número de subprocesos (como las ofertas de uwsgi en una implementación de producción).
¿Cuáles son las desventajas de usar esto? Si no espero más de unas pocas solicitudes al mismo tiempo, ¿puedo seguir usando esto?
Cambiar de un solo subproceso a varios subprocesos puede generar errores de concurrencia ... si usa esto, tenga cuidado con la forma en que maneja los objetos globales (¡vea el objeto g en la documentación!) Y el estado.
A partir de Flask 1.0, el servidor WSGI incluido con Flask se ejecuta en modo roscado de forma predeterminada.
Antes de 1.0, o si deshabilita el subprocesamiento, el servidor se ejecuta en modo de subproceso único y solo puede manejar una solicitud a la vez. Cualquier solicitud paralela tendrá que esperar hasta que se pueda manejar, lo que puede generar problemas si intentas contactar a tu propio servidor desde una solicitud .
Con
threaded=True
solicitudes
threaded=True
se manejan en un nuevo hilo.
La cantidad de subprocesos que su servidor puede manejar simultáneamente depende completamente de su sistema operativo y los límites que establece en la cantidad de subprocesos por proceso.
La implementación utiliza la
clase
SocketServer.ThreadingMixIn
, que no establece límites para el número de subprocesos que puede girar.
Tenga en cuenta que el servidor Flask está diseñado solo para desarrollo . No es un servidor listo para producción. No confíe en él para ejecutar su sitio en la web en general. Utilice un servidor WSGI adecuado (como gunicorn o uWSGI ) en su lugar.