Где регистрируются системные сбои задач Celery и исключения Python? - PullRequest
1 голос
/ 21 октября 2019

У меня есть задачи Python, которые планируются и выполняются Celery с использованием systemd на производственном сервере Ubuntu. Мне известны 3 файла журнала:

1 Эта запись в рабочей службе создает файл журнала, в котором перечислены входящие полученные задачи

ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} \
-A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
--logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'

2 Эта запись в службе ритма создаетфайл журнала, в котором перечислены отправленные задачи ритма

ExecStart=/bin/sh -c '${CELERY_BIN} beat  \
-A ${CELERY_APP} --pidfile=${CELERYBEAT_PID_FILE} \
-s ${CELERYBEAT_DB_FILE} \
--logfile=${CELERYBEAT_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL}'

3 У меня есть пользовательское ведение журнала, в котором используется стандартный python import logging

Теперь эти 3 файла работают должным образом. Однако, если код python в моих задачах вызывает исключение, я не вижу его нигде в журнале. Если я вручную вставлю ошибку, например, нелегальный импорт, который вызовет исключение, то я смогу увидеть это в журнале (3), когда я вручную запускаю задачу в командной строке. Однако если служба systemd инициирует это исключение, его нельзя увидеть в журнале (3). Даже если я, например, заставляю задачу принудительной ошибки запускаться каждую минуту, я вижу, как она правильно отправляется в log (2), принимается в log (1), затем мой код записывается в log (3), пока не будет выполнено исключение, после чеговход в систему log (3) не записывает это.

Кто-нибудь знает, где будет записано это исключение Python? А также, если в моей системе есть какой-либо журнал, который показывает, что задача не выполнена и почему?

Большое спасибо, LJHW

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