Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Systemd: Reloading celery shuts it down cleanly, but won't start back up #4388

Closed
2 tasks done
jaddison opened this issue Nov 15, 2017 · 3 comments
Closed
2 tasks done

Comments

@jaddison
Copy link

jaddison commented Nov 15, 2017

Checklist

  • I have verified that the issue exists against the master branch of Celery.
  • I have included the output of celery -A proj report in the issue:
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',
)

Steps to reproduce

On Ubuntu 16.04.

  1. set up celery via systemd according to the celery docs
  2. start celery via sudo service <your-celery-service-name> start
  3. try to reload celery via sudo service <your-celery-service-name> reload

Expected behavior

Celery should gracefully reload.

Actual behavior

Celery does not gracefully reload. It shuts down, but never restarts.

After issuing the reload request (and subsequent failure to start), the output of sudo journalctl -xe doesn't seem to show anything nefarious:

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

Perhaps CELERYD_PID_FILE="/var/run/celery/%N.pid" being unknown is the problem? Meaning, we cannot tell Systemd (via PIDFile=) what the actual location of the PID file is, because it's generated by celery itself, no?

@mattLLVW
Copy link

Could you post your systemd and celery file?
You can tell systemd where to store the PID, but you have to escape it:

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

Notice the double percent.

@magic5650
Copy link

wo have same problem.
i resolve it by edit systemd config.
Restart=always

@auvipy
Copy link
Member

auvipy commented Jun 9, 2019

2d37fac

@auvipy auvipy closed this as completed Jun 9, 2019
@auvipy auvipy added this to the 4.4.0 milestone Jun 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants