Desead
@Desead

Как правильно запустить планировщик?

Потребовалось запустить celery.
Вот по этому примеру всё сделал: https://qna.habr.com/q/439960
Там вроде всё понятно, но не всё работает. Подскажите кто понимает лучше меня в этом вопросе )

вот сам конфиг:
spoiler

# Common Celery Settings
CELERY_BIN="/home/desead/www/Changebox/venv/bin/celery"
CELERYD_USER="desead"
CELERYD_GROUP="www-data"
CELERY_APP="Changebox.celery:app"

# Common env settings
DJANGO_SETTINGS_MODULE=Changebox.settings
LC_ALL=ru_RU.UTF-8
LC_LANG="ru_RU.UTF-8"
LANG=ru_RU.UTF-8

# Worker settings
CELERYD_NODES="w1 w2 w3 w4 w5 w6"
CELERYD_OPTS="-Q:w1 default --autoscale:w1=8,4
-Q:w2 queue2 --autoscale:w2=6,2 \
-Q:w3 queue3 --autoscale:w3=8,2 \
....................
-Q:w6 queue6 --autoscale:w6=6,2 "

CELERYD_MULTI="multi"
CELERYD_STATE_DIR="/var/run/celery"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_LOG_FILE="/var/log/celery/%n.log"
CELERYD_LOG_LEVEL="INFO"

# Beat settings
CELERYBEAT_STATE_DIR="/var/run/celerybeat"
CELERYBEAT_PID_FILE="/var/run/celerybeat/beat.pid"
CELERYBEAT_LOG_FILE="/var/log/celery/beat.log"
CELERYBEAT_LOG_LEVEL="INFO"
CELERYBEAT_SCHEDULE="/var/run/celerybeat/schedule"
CELERYBEAT_WORKDIR="/home/desead/www/Changebox"

здесь не до конца ясен блок настройки воркера:
# Worker settings
CELERYD_NODES="w1 w2 w3 w4 w5 w6"
CELERYD_OPTS="-Q:w1 default --autoscale:w1=8,4
-Q:w2 queue2 --autoscale:w2=6,2 \
-Q:w3 queue3 --autoscale:w3=8,2 \
....................
-Q:w6 queue6 --autoscale:w6=6,2"
Во первых вот это многоточие .................... - оно же не должно быть?
Далее я себе эту область изменил вот так:
CELERYD_NODES="w1 w2 w3"
CELERYD_OPTS="-Q:w1 default --autoscale:w1=8,4"
Это значит что я оставил 3 ноды (нода я так понял это воркер + очередь ?)
и первого воркера отправил в дефолтную очередь, а куда пошли два других воркера ?
Вообщем с такими настройками всё работает и воркеров запустил удачно, файл настроек аналогичен как выше по ссылке.
А вот с планировщиком какая то неясная ситуация. Не хочет запускаться. вот сам файл настроек:
spoiler

[Unit]
Description=CeleryBeat Service
After=network.target redis.target

[Service]
Type=simple
User=desead
Group=www-data
EnvironmentFile=/etc/systemd/celery.conf
WorkingDirectory=/home/desead/www/Changebox
PermissionsStartOnly=true
ExecStartPre=-/bin/mkdir -p ${CELERYBEAT_STATE_DIR}
ExecStartPre=/bin/chown -R ${CELERYD_USER}:${CELERYD_GROUP} ${CELERYBEAT_STATE_DIR}
ExecStartPre=/bin/rm ${CELERYBEAT_SCHEDULE}
ExecStart=/bin/bash -c '${CELERY_BIN} beat \
-A ${CELERY_APP} \
--workdir=${CELERYBEAT_WORKDIR} \
--pidfile=${CELERYBEAT_PID_FILE} \
--logfile=${CELERYBEAT_LOG_FILE} \
--loglevel=${CELERYBEAT_LOG_LEVEL} \
--schedule=${CELERYBEAT_SCHEDULE}'
ExecStop=/bin/systemctl kill celerybeat_changebox.service

[Install]
WantedBy=multi-user.target

п.с. Кстати в файле настроек рабочих и планировщика есть переменная EnvironmentFile, которая = - /etc/systemd/celery.conf.
Вот так этот минус это тоже опечатка? просто она в обоих примерах есть.


вообщем когда запускаю планировщик то он не запускается. Вот что пишет:
Process: 1985 ExecStartPre=/bin/rm ${CELERYBEAT_SCHEDULE} (code=exited, status=1/FAILURE)
т.е. что то не так с названием планировщика или я не туда его отправляю, не могу понять.
При этом в журнале пишет:
Failed password for root from 103.98.119.251 port 40818 ssh2
при чём тут вообще ssh и этот непонятный IP и порт?
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
Desead
@Desead Автор вопроса
Пока ответ шёл, пришлось разобраться самому.
В планировщике нужно писать вот так:
ExecStart=/bin/bash -c '${CELERY_BIN} \
-A ${CELERY_APP} beat \
--pidfile=${CELERYBEAT_PID_FILE} \
--logfile=${CELERYBEAT_LOG_FILE} \
--loglevel=${CELERYBEAT_LOG_LEVEL} \
--schedule=${CELERYBEAT_SCHEDULE}'

вместо того что стоит в начальном примере. Здесь мы убрали ключ --workdir, его уже не существует и передвинули ключ beat, сейчас он должен стоять на этом месте.
Всё остальное работает норм.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы