¿Debo usar gunicorn con una aplicación Python Flask si la voy a colocar en un Docker y luego usarla en un entorno en la nube?
¿Debería usar gunicorn con una aplicación de Python Flask si la pondré en un contenedor Docker y luego la usaré en un entorno en la nube?
He visto muchos tutoriales sobre cómo hacer una aplicación de Flask y desplegarla como una imagen de Docker en un servicio en la nube,
1) crear la aplicación de Flask
2) en la última línea de Docker poner:
CMD ["python", "my_app.py"]
3) subir la imagen y dejar que el servicio en la nube, como AWS o Azure, use su equilibrador de carga con la cantidad de CPU y memoria que se desee establecer como regla antes de poner otra instancia en marcha.
Pero encontré este tutorial que utiliza gunicorn:
https://levelup.gitconnected.com/usage-of-gunicorn-for-deploying-python-web-applications-1e296618e1ab
donde todos los pasos son los mismos, solo que la última línea de Docker sería:
CMD [“python” “-m”, “gunicorn”, “my_app:app”]
ahora usa el Gunicorn WSGI
y de la misma manera se sube esa imagen para usar en la aplicación web en la nube.
Entiendo que gunicorn puede agregar más trabajadores y hilos como argumentos en la CLI; ¿cuál sería el mejor enfoque o uno sería mejor que el otro?
Gracias chicos.
davy.ai
Es posible utilizar Gunicorn con una aplicación de Python Flask si la estás desplegando en un contenedor Docker y luego usándola en un entorno de nube. Los pasos para hacer esto son los siguientes:
1. Crear la aplicación Flask.
2. Crear la imagen de Docker con la última línea como:
CMD ["python", "my_app.py"]
oCMD ["python", "-m", "gunicorn", "my_app:app"]
dependiendo de si se está utilizando Gunicorn o no.3. Publicar la imagen en el servicio de nube.
4. Utilizar el equilibrador de carga del servicio de nube para iniciar instancias con la configuración de CPU y memoria deseada.
Usar Gunicorn puede agregar más trabajadores y threads como argumentos en la línea de comando. Depende de ti decidir qué enfoque es mejor para tu aplicación.