Skip to main content

Introducción

  • Este artículo te guía a través del proceso de uso de Gunicorn, un servidor HTTP WSGI para Python, para ejecutar aplicaciones Flask, Django y otras aplicaciones WSGI en producción.
  • Antes de empezar, asegúrate de tener Python y Gunicorn instalados en tu entorno. Puedes instalar Gunicorn usando el siguiente comando:
  • Agrega también gunicorn a tu requirements.txt, para que Square Cloud lo instale junto con tus demás dependencias:
requirements.txt

Uso básico

Para ejecutar una aplicación web de Python usando Gunicorn, necesitas tener una aplicación WSGI como flask, django o algún otro framework.
Una vez que tengas tu aplicación lista, necesitas conocer el nombre del módulo y el nombre de la variable que contiene el objeto de la aplicación WSGI.
Por ejemplo, si tienes una aplicación Flask en un archivo llamado app.py y la instancia de Flask se llama app, puedes ejecutarla con Gunicorn usando el siguiente comando:
En este comando:
  • python -m gunicorn ejecuta Gunicorn como un módulo de python.
  • --bind 0.0.0.0:80 le indica a Gunicorn que escuche en todas las interfaces de red en el puerto 80.
  • app:app especifica el nombre del módulo (app) y el nombre de la variable (app) que contiene el objeto de la aplicación WSGI.
Para Django, apunta Gunicorn al módulo wsgi.py que Django crea dentro del paquete de tu proyecto (reemplaza myproject por el nombre de tu proyecto):

Ejecución en Square Cloud

Coloca el comando en el campo START de tu archivo de configuración, para que Square Cloud inicie tu aplicación con Gunicorn:
squarecloud.app
Gunicorn debe hacer bind en 0.0.0.0:80: Square Cloud entrega el tráfico de tu subdominio al puerto 80 de tu aplicación. Square Cloud también define la variable de entorno PORT como 80, y Gunicorn la lee: sin la opción --bind, escucha en 0.0.0.0:$PORT cuando PORT está definida.

Opciones adicionales

Gunicorn proporciona varias opciones para personalizar su comportamiento. Aquí mostraremos algunas opciones.

Workers

  • --workers <number>
Esta opción establece el número de procesos worker para manejar las peticiones. Cada worker es un proceso separado con su propia copia de tu aplicación en memoria, así que en Square Cloud el límite suele ser la RAM, no la CPU. Empieza con 2 workers y agrega más solo después de aumentar MEMORY. Si tu aplicación se detiene con LACK_OF_RAM, reduce el número de workers.
No calcules los workers con multiprocessing.cpu_count() ni con la fórmula (2 x $num_cores) + 1: dentro de un contenedor, el número de núcleos puede ser el de la máquina host, lo que inicia decenas de workers y agota tu RAM.

Name

  • --name <name>
  • -n <name>
Esta opción establece el nombre del proceso para Gunicorn.

Worker-class

  • --worker-class <class>
  • -k <class>
Esta opción establece el tipo de worker a usar. El valor predeterminado es sync, pero también puedes usar gevent, eventlet, tornado u otro tipo de worker.

Extras

Gunicorn tiene muchas más opciones y funcionalidades que puedes explorar en la documentación oficial.

Archivo de configuración

  • También puedes definir las opciones de Gunicorn en un archivo de configuración de Python. Gunicorn carga automáticamente un archivo llamado gunicorn.conf.py del directorio donde se ejecuta, que en Square Cloud es la raíz de tu proyecto. Para cualquier otro nombre de archivo, pásalo con -c <file>.
gunicorn.conf.py
  • Con este archivo en tu proyecto, el campo START puede ser simplemente:
squarecloud.app

Próximos pasos

Flask

Haz deploy de una aplicación Flask detrás de Gunicorn.

Django

Haz deploy de un proyecto Django detrás de Gunicorn.

La app no inicia

Soluciona EADDRINUSE, LACK_OF_RAM y otros fallos de inicio.

¿Te gustó este artículo?

  • Creamos este contenido con mucho cuidado para ofrecer la mejor ayuda posible. Si este artículo te ayudó de alguna manera, ¡apoya nuestro trabajo! Los desarrolladores ya calificaron a Square Cloud con 4.9/5 en 402 reseñas en Google y Trustpilot: ¡deja la tuya también! Nos ayuda a entender qué es lo que más te importa.

Google Reviews

Deja tu reseña en Google Reviews.

Trustpilot

Deja tu reseña en Trustpilot.