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 formulario es solamente para comentarios acerca de los artículos. si necesita ayuda, por favor contacte al soporte técnico. No incluya contraseñas, números de cuenta ni otros datos privados de su cuenta.

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?