Ejecutar aplicación web con gevent

Quiero intentar jugar con gevent como servidor web y marco de aplicaciones. No veo ninguna forma de “reiniciar” el servidor o actualizar el código de la aplicación sin matar e iniciar de nuevo toda la aplicación de Python.

¿Es así como se hace? Tal vez solo sea cuestión de que yo comprenda un paradigma diferente al de Apache.

Además, como una pregunta semi relacionada, ¿es incluso una buena idea ejecutar un servidor web Y el sitio / servicio en sí mismo a través de gevent? He visto otras implementaciones utilizando gunicorn para el servidor y gevent para la aplicación, pero desde los puntos de referencia que he visto, gevent supera ampliamente a gunicorn como servidor cuando se trata de escalar.

Gunicorn tiene 3 trabajadores gevent:

  • -k gevent (usando el analizador HTTP de gunicorn)
  • -k gevent_pywsgi (usando el módulo gevent.pywsgi)
  • -k gevent_wsgi (usando el módulo gevent.wsgi)

gevent.wsgi es un servidor HTTP rápido basado en libevent.

gevent.pywsgi es un servidor WSGI implementado en Python.

La razón de la existencia de gevent.pywsgi es libevent-http que tiene algunas limitaciones , como no soportar keep-alive, streaming, ssl y websockets.

Tenga en cuenta que la nueva versión alfa (1.0a3) de gevent usa libev y no incluye un servidor WSGI basado en libevent-http. Actualmente, gevent.wsgi aquí es un alias para gevent.pywsgi.

Las clases de servidor en gevent no tienen ninguna función relacionada con la gestión de procesos, reinicio, recarga, etc. Sin embargo, esas características son necesarias para la implementación. Gunicorn proporciona eso para los servidores WSGI de gevent. Utilízalo