Celery: Systemd: le rechargement du céleri l'arrête proprement, mais ne redémarre pas

Créé le 15 nov. 2017  ·  3Commentaires  ·  Source: celery/celery

Liste de contrôle

  • [x] J'ai vérifié que le problème existe avec la branche master de Celery.
  • [x] J'ai inclus la sortie de celery -A proj report dans le numéro:
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',
)

Étapes à suivre pour reproduire

Sur Ubuntu 16.04.

  1. configurer le céleri via systemd selon la documentation sur le céleri
  2. commencer le céleri via sudo service <your-celery-service-name> start
  3. essayez de recharger le céleri via sudo service <your-celery-service-name> reload

Comportement prévisible

Le céleri devrait recharger gracieusement.

Comportement réel

Le céleri ne se recharge

Après l'émission de la demande de rechargement (et l'échec du démarrage ultérieur), la sortie de sudo journalctl -xe ne semble pas montrer quoi que ce soit de néfaste:

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

Peut-être que CELERYD_PID_FILE="/var/run/celery/%N.pid" est inconnu est le problème? Cela signifie que nous ne pouvons pas dire à Systemd (via PIDFile= ) quel est l'emplacement réel du fichier PID, car il est généré par le céleri lui-même, non?

Deployment Bug Report

Commentaire le plus utile

wo ont le même problème.
Je le résous en éditant la configuration de systemd.
Redémarrer = toujours

Tous les 3 commentaires

Pourriez-vous publier votre fichier systemd et céleri?
Vous pouvez indiquer à systemd où stocker le PID, mais vous devez y échapper:

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

Remarquez le double pour cent.

wo ont le même problème.
Je le résous en éditant la configuration de systemd.
Redémarrer = toujours

Cette page vous a été utile?
0 / 5 - 0 notes