Celery: Systemd: la recarga de apio lo cierra limpiamente, pero no vuelve a empezar

Creado en 15 nov. 2017  ·  3Comentarios  ·  Fuente: celery/celery

Lista de Verificación

  • [x] He verificado que el problema existe en la sucursal master de Apio.
  • [x] He incluido el resultado de celery -A proj report en el problema:
software -> celery:4.1.0 (latentcall) kombu:4.1.0 py:3.5.2
            billiard:3.5.0.3 redis:2.10.6
platform -> system:Linux arch:64bit, ELF imp:CPython
loader   -> celery.loaders.app.AppLoader
settings -> transport:redis results:disabled

CACHES: {
    'default': {   'BACKEND': 'django_redis.cache.RedisCache',
                   'LOCATION': 'redis://localhost:6379/1',
                   'TIMEOUT': 3600}}

CELERY_TASK_COMPRESSION: 'gzip'
CELERY_TASK_IGNORE_RESULT: True
CELERY_ACCEPT_CONTENT: ['pickle', 'json', 'msgpack', 'yaml']
CELERY_BROKER_URL: 'redis://localhost:6379/0'

DEBUG: False
INSTALLED_APPS:
    ('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.admin',
 'django.contrib.sitemaps',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'django.contrib.redirects',
 'django.contrib.gis',

 'django_extensions',
)

pasos para reproducir

En Ubuntu 16.04.

  1. configurar apio a través de systemd de acuerdo con los documentos de apio
  2. comience con el apio a través de sudo service <your-celery-service-name> start
  3. intenta recargar apio a través de sudo service <your-celery-service-name> reload

Comportamiento esperado

El apio debe recargarse con gracia.

Comportamiento real

El apio no se recarga con gracia. Se apaga, pero nunca se reinicia.

Después de emitir la solicitud de recarga (y la posterior falla en el inicio), la salida de sudo journalctl -xe no parece mostrar nada nefasto:

Nov 15 04:33:04 ip-172-31-44-219 sudo[12972]:   ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/sbin/service myproj-celery reload
Nov 15 04:33:04 ip-172-31-44-219 sudo[12972]: pam_unix(sudo:session): session opened for user root by ubuntu(uid=0)
Nov 15 04:33:04 ip-172-31-44-219 systemd[1]: Reloading myproj celery worker.
-- Subject: Unit myproj-celery.service has begun reloading its configuration
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit myproj-celery.service has begun reloading its configuration
Nov 15 04:33:07 ip-172-31-44-219 sh[12979]: celery multi v4.1.0 (latentcall)
Nov 15 04:33:07 ip-172-31-44-219 sh[12979]: > Stopping nodes...
Nov 15 04:33:07 ip-172-31-44-219 sh[12979]:         > worker1@ip-172-31-44-219: TERM -> 12962
Nov 15 04:33:07 ip-172-31-44-219 sh[12979]: > Waiting for 1 node -> 12962.....
Nov 15 04:33:07 ip-172-31-44-219 sh[12979]:         > worker1@ip-172-31-44-219: OK
Nov 15 04:33:07 ip-172-31-44-219 sh[12979]: > Restarting node worker1@ip-172-31-44-219: OK
Nov 15 04:33:07 ip-172-31-44-219 sh[12979]: > Waiting for 1 node -> None...
Nov 15 04:33:07 ip-172-31-44-219 sh[12992]: celery multi v4.1.0 (latentcall)
Nov 15 04:33:07 ip-172-31-44-219 sh[12992]: > worker1@ip-172-31-44-219: DOWN
Nov 15 04:33:07 ip-172-31-44-219 systemd[1]: Reloaded myproj celery worker.
-- Subject: Unit myproj-celery.service has finished reloading its configuration
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit myproj-celery.service has finished reloading its configuration
--
-- The result is done.
Nov 15 04:33:07 ip-172-31-44-219 sudo[12972]: pam_unix(sudo:session): session closed for user root

¿Quizás CELERYD_PID_FILE="/var/run/celery/%N.pid" siendo desconocido es el problema? Es decir, no podemos decirle a Systemd (a través de PIDFile= ) cuál es la ubicación real del archivo PID, porque es generado por el propio apio, ¿no?

Deployment Bug Report

Comentario más útil

Tenemos el mismo problema.
Lo resuelvo editando la configuración de systemd.
Reiniciar = siempre

Todos 3 comentarios

¿Podrías publicar tu archivo systemd y apio?
Puede decirle a systemd dónde almacenar el PID, pero debe escapar de él:

celery multi restart w1 -A proj --pidfile=/tmp/celery_%%n.pid

Observe el doble por ciento.

Tenemos el mismo problema.
Lo resuelvo editando la configuración de systemd.
Reiniciar = siempre

¿Fue útil esta página
0 / 5 - 0 calificaciones