Django celery WorkerLostError: работник преждевременно завершил работу: ошибка сигнала 9 (SIGKILL) - PullRequest
0 голосов
/ 23 мая 2018

Как лучше всего запускать сельдерей в качестве демона в производственном virtualenv?Я использую следующее в локальной среде, которая работает идеально, и получение задач работает, как ожидалось.Но в производстве всегда застрял на

WorkerLostError: Worker exited prematurely: signal 9 (SIGKILL) error

Я использую следующую конфигурацию в локальной и в производственной среде:

/ etc / default / celeryd:

CELERY_BIN="path/to/celery/bin"
CELERY_APP="myproj"
CELERYD_CHDIR="home/myuser/project/myproj"
CELERYD_OPTS="--time-limit=300 --concurrency=4"
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_USER="myuser"
CELERYD_GROUP="myuser"
CELERY_CREATE_DIRS=1

/ etc / init.d / celeryd: [ celeryd ]

Информация о версии пакета и ОС:

  1. Ubuntu == 16.04.2
  2. Сельдерей == 4.1.0
  3. rabbitmq == 3.5.7
  4. django == 2.0.1

Я также использую эти команды при создании сельдерея для запуска в качестве демона:

  1. sudo chown -R root: root / var / log / celery /
  2. sudo chown-R root: root / var / run / celery /
  3. sudo update-rc.d celeryd по умолчанию
  4. sudo update-rc.d celeryd enable
  5. sudo / etc /init.d / celeryd start

Вот моя конфигурация django settings.py для сельдерея:

CELERY_BROKER_URL = 'amqp://localhost'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_RESULT_BACKEND = 'db+sqlite:///results.sqlite'
CELERY_TASK_SERIALIZER = 'json'

Нужен совет эксперта, чтобы сделать демона сельдерея дляправильно работать в производстве virtualenv.Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Я получил эту ошибку из-за ошибки нехватки памяти в

/ var / log / kern.log

У меня запущен Tensorflow в одной из моих задач,которая требует дополнительной вычислительной мощности, но моей физической памяти (ОЗУ) недостаточно для обработки такой большой нагрузки.Странно, что нет логина в сельдерее, кроме ошибки SigKill 9.Но журнал ядра помог мне это исправить.

0 голосов
/ 04 июня 2019

Полагаю, это может быть симптомом ООМ.Я развертывал серверную часть Celery в контейнере Docker - «он работал на моей машине», но не в кластере.Я выделил больше оперативной памяти для задачи и больше не имею проблемы.

0 голосов
/ 23 мая 2018

Если вы не создали отдельный vhost & user для rabbitmq, установите для CELERY_BROKER_URL значение amqp://guest@localhost//

Кроме того, вместо root вы должны установить владельца /var/log/celery/ и /var/run/celery/ на "myuser ", как вы установили в своем конфиге celeryd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...