Celery: Systemd: Seledri yang dimuat ulang akan menutupnya dengan bersih, tetapi tidak mau menyala kembali

Dibuat pada 15 Nov 2017  ·  3Komentar  ·  Sumber: celery/celery

Daftar Periksa

  • [x] Saya telah memverifikasi bahwa masalah tersebut ada pada cabang Celery master .
  • [x] Saya telah menyertakan keluaran dari celery -A proj report dalam masalah:
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',
)

Langkah-langkah untuk mereproduksi

Di Ubuntu 16.04.

  1. atur seledri melalui systemd sesuai dengan dokumen seledri
  2. mulai seledri dengan sudo service <your-celery-service-name> start
  3. coba muat ulang seledri melalui sudo service <your-celery-service-name> reload

Perilaku yang diharapkan

Seledri harus diisi ulang dengan anggun.

Perilaku sebenarnya

Seledri tidak mengisi ulang dengan anggun. Itu mati, tapi tidak pernah restart.

Setelah mengeluarkan permintaan muat ulang (dan kegagalan berikutnya untuk memulai), keluaran sudo journalctl -xe sepertinya tidak menunjukkan sesuatu yang jahat:

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

Mungkin CELERYD_PID_FILE="/var/run/celery/%N.pid" tidak diketahui adalah masalahnya? Artinya, kita tidak dapat memberi tahu Systemd (melalui PIDFile= ) apa lokasi sebenarnya dari file PID, karena itu dihasilkan oleh seledri itu sendiri, bukan?

Deployment Bug Report

Komentar yang paling membantu

wo punya masalah yang sama.
saya mengatasinya dengan mengedit konfigurasi systemd.
Mulai ulang = selalu

Semua 3 komentar

Bisakah Anda memposting file systemd dan seledri Anda?
Anda dapat memberi tahu systemd di mana menyimpan PID, tetapi Anda harus menghindarinya:

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

Perhatikan persen ganda.

wo punya masalah yang sama.
saya mengatasinya dengan mengedit konfigurasi systemd.
Mulai ulang = selalu

Apakah halaman ini membantu?
0 / 5 - 0 peringkat