Рубрики
Без рубрики

Сельдерей с Джанго в производстве

0. Фон 1. Создайте выделенный пользователь и группу 2. Создайте файл конфигурации сельдерея 3. Создать … Теги с Джанго, сельдереем, убунту, Python.

0. Фон 1. Создайте выделенный пользователь и группу 2. Создайте файл конфигурации сельдерея 3. Создайте системный файл 4. Перезапустите сервер 5. использованная литература

0. Задний план

Три месяца назад я развернул свой реагирование, проект Django на сервере Ubuntu. Я использовал сельдерей для очереди задач. Сегодня я попытался посмотреть среду сельдерей, и я запутался в файлах и моей конфигурации сельдерея. Теперь в этом посте я постараюсь объяснить все то, что вы должны знать о конфигурации сельдерея на сервере.

Если вы никогда не слышали о сельдерее, проверьте Официальная документация сельдерея , Первые шаги с сельдереем и Первые шаги с Джанго прежде чем прочитать этот пост.

В официальной документации сельдерея вы найдете три возможных пути Демомонов Ваш сельдерей с Python , то есть init-script , Init-script: Celerybeat и Использование Systemd Отказ В этом посте я только объясню о Системная демонизация Отказ

1. Создайте выделенный пользователь и группу

Прежде всего, вам нужно создать выделенный пользователь и группу как сельдерей С

sudo groupadd celery
sudo useradd -g celery celery

2. Создайте файл конфигурации сельдерея

Теперь давайте создадим файл конфигурации сельдерея внутри /etc/default/celreeryd каталог,

Примечание: Пожалуйста, замените Пользователь С вашим пользователем Ubuntu CELERY_APP_NAME , Celeryd_chdir. и Celery_bin Отказ

#   most people will only start one node:
CELERYD_NODES="worker1"
#   but you can also start multiple and configure settings
#   for each in CELERYD_OPTS
#   alternatively, you can specify the number of nodes to start:
#CELERYD_NODES=10

# Absolute or relative path to the 'celery' command:
CELERY_BIN="/home/user/.virtualenvs/venv/bin/celery"
# App instance to use
# comment out this line if you don't use an app
CELERY_APP="celery_app_name"
# or fully qualified:
# Where to chdir at start.
CELERYD_CHDIR="/home/user/django-project/"

# Extra command-line arguments to the worker
CELERYD_OPTS="--time-limit=300 --concurrency=8"
# Configure node-specific settings by appending node name to arguments:
# Set logging level to DEBUG
# %n will be replaced with the first part of the node name.
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"

# Workers should run as an unprivileged user.
#   You need to create this user manually (or you can choose
#   a user/group combination that already exists (e.g., nobody).
CELERYD_USER="celery"
CELERYD_GROUP="celery"
CELERYD_LOG_LEVEL="INFO"
# If enabled PID and log directories will be created if missing,
# and owned by the userid/group configured.
CELERY_CREATE_DIRS=1

Теперь давайте изменим владельца журнала сельдерея и файла PID,

chown -R celery:celery /var/log/celery/
chown -R celery:celery /var/run/celery/

3. Создайте системный файл

Теперь давайте создадим системный файл внутри /etc/systemd/system/celery.service каталог и напишите следующий контент,

Примечание: Пожалуйста, замените Пользователь С помощью вашего пользователя Ubuntu и убедитесь, что проверьте путь к файлу Celery Bin (этот файл будет доступен, вероятно, внутри вашей виртуальной среды)

[Unit]
Description=Celery Service
After=network.target

[Service]
Type=forking
User=celery
Group=celery

EnvironmentFile=/etc/default/celeryd
WorkingDirectory=/home/user/django-project
ExecStart=/home/user/.virtualenvs/venv/bin/celery multi start ${CELERYD_NODES} \
  -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
  --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}
ExecStop=/home/user/.virtualenvs/venv/bin/celery ${CELERY_BIN} multi stopwait ${CELERYD_NODES} \
  --pidfile=${CELERYD_PID_FILE}
ExecReload=/home/user/.virtualenvs/venv/bin/celery ${CELERY_BIN} multi restart ${CELERYD_NODES} \
  -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
  --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}

[Install]
WantedBy=multi-user.target

4. Перезагрузите сервер

Теперь все настроено. Теперь вам просто нужно перезапустить сервис

sudo systemctl daemon-reload
sudo systemctl enable celery
sudo systemctl restart celery

Теперь ваш сельдерей готов к использованию в производстве. Вы можете проверить статус сельдерея вручную, набрав следующую код,

celery -A CELERY_APP_NAME worker -l INFO

5. использованная литература

  1. Документация сельдерей
  2. Демонизация сельдерея в производстве: Stackoverflow
  3. Сельдерей не работает (разрешение запрещено): переполнение стека

Оригинал: “https://dev.to/iamtekson/django-with-celery-in-production-cb5”