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. использованная литература
- Документация сельдерей
- Демонизация сельдерея в производстве: Stackoverflow
- Сельдерей не работает (разрешение запрещено): переполнение стека
Оригинал: “https://dev.to/iamtekson/django-with-celery-in-production-cb5”