Usar linger con Gunicorn

 

Generalidades

Este artículo explica cómo usar el paquete de linger de Python con el servidor Gunicorn WSGI. Esta combinación permite que tu aplicación ejecute procesos persistentes y que tus servicios se reinicien si tu aplicación se cae o el servidor se reinicia.

Requisitos previos

Este artículo asume que has completado los siguientes pasos:

Paso 1 — Instalar linger

Para instalar linger en tu usuario, inicia sesión en tu servidor a través de SSH y corre el siguiente comando:

[server]$ loginctl enable-linger

Este comando no responderá con ninguna salida.

Paso 2 — Configurar Gunicorn

Este paso configura Gunicorn para trabajar con unidades de usuario de systemd en el servidor.

  1. Crea los siguientes directorios:
    [server]$ mkdir -p ~/.config/systemd/user/
  2. Crea un archivo gunicorn.service en el directorio .config/systemd/user:
    [server]$ nano ~/.config/systemd/user/gunicorn.service
  3. Agrega el siguiente código a este archivo.
    [Unit]
    Description=Gunicorn instance to serve application
    After=network.target
    
    [Service]
    WorkingDirectory=/path/to/your/app
    Environment="PATH=/path/to/venv/bin"
    ExecStart=/path/to/venv/bin/gunicorn --workers 3 --bind=<example.com>:<port> myapp:app
    ExecReload=/bin/kill -s HUP $MAINPID
    KillMode=mixed
    TimeoutStopSec=5
    PrivateTmp=true
    Restart=on-failure
    
    [Install]
    WantedBy=default.target
  4. Edita las líneas resaltadas a continuación como lo siguiente:
    • WorkingDirectory: La ruta a la aplicación de tu sitio web.
    • Environment: La ruta a tu entorno virtual.
    • ExecStart: La ruta a tu instalación de gunicorn.
    • example.com: El nombre de tu sitio web.
    • port: El número de puerto que configuraste en tu Servidor Proxy.
    • myapp: El nombre de tu aplicación.

    Revisa Running Gunicorn para más información.

  5. Habilita la unidad del usuario de gunicorn:
    [server]$ systemctl --user enable gunicorn
  6. Inicia la unidad con gunicorn:
    [server]$ systemctl --user start gunicorn
  7. Confirma que está corriendo:
    [server]$ systemctl --user status gunicorn

Los servicios de tu aplicación ahora se reiniciarán automáticamente cuando el servidor se reinicie o si la aplicación se cae.

Configurar el inicio de sesión

Puedes configurar el acceso y el registro de errores modificando el archivo gunicorn.service creado anteriormente. El código que apunta a tus archivos de registro debe agregarse a la línea ExecStart. Por ejemplo:

ExecStart=/path/to/venv/bin/gunicorn --workers 3 --bind=<example.com>:<port> --access-logfile /path/to/venv/bin/gunicorn/logs/gunicorn_access --error-logfile /path/to/venv/bin/gunicorn/logs/gunicorn_error --capture-output myapp:app

Solo tienes que ajustar la ruta a tu directorio de registros. Por ejemplo:

  • /path/to/venv/bin/gunicorn/logs/

Luego, Gunicorn creará automáticamente los archivos de registro de acceso y errores utilizando este código.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?