Django                
            Запуск сельдерея с супервизором
        
        
            
    Поиск…
Конфигурация сельдерея
СЕЛЬДЕРЕЙ
- Установка - - pip install django-celery
- добавлять 
- Основная структура проекта. - - src/ - bin/celery_worker_start # will be explained later on - logs/celery_worker.log - stack/__init __.py - stack/celery.py - stack/settings.py - stack/urls.py - manage.py
- Добавьте файл - celery.pyв- stack/stack/папку- stack/stack/папку.- from __future__ import absolute_import import os from celery import Celery os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'stack.settings') from django.conf import settings # noqa app = Celery('stack') app.config_from_object('django.conf:settings') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
- в ваш - stack/stack/__init__.pyдобавьте следующий код:- from __future__ import absolute_import from .celery import app as celery_app # noqa
- Создайте задачу и отметьте ее, например, как - @shared_task()- @shared_task() def add(x, y): print("x*y={}".format(x*y))
- Запуск работника сельдерея «вручную»: - celery -A stack worker -l infoесли вы также хотите добавить
Управляющий супервайзер
- Создайте скрипт, чтобы начать работу с сельдереем. Вставьте скрипт в свое приложение. Например: - stack/bin/celery_worker_start- #!/bin/bash NAME="StackOverflow Project - celery_worker_start" PROJECT_DIR=/home/stackoverflow/apps/proj/proj/ ENV_DIR=/home/stackoverflow/apps/proj/env/ echo "Starting $NAME as `whoami`" # Activate the virtual environment cd "${PROJECT_DIR}" if [ -d "${ENV_DIR}" ] then . "${ENV_DIR}bin/activate" fi celery -A stack --loglevel='INFO'
- Добавить права выполнения для вновь созданного скрипта: - chmod u+x bin/celery_worker_start
- Установите диспетчер (пропустите этот тест, если супервизор уже установлен) - apt-get install supervisor
- Добавьте файл конфигурации для своего супервизора, чтобы начать сельдерей. Поместите его в - /etc/supervisor/conf.d/stack_supervisor.conf- [program:stack-celery-worker] command = /home/stackoverflow/apps/stack/src/bin/celery_worker_start user = polsha stdout_logfile = /home/stackoverflow/apps/stack/src/logs/celery_worker.log redirect_stderr = true environment = LANG = en_US.UTF-8,LC_ALL = en_US.UTF-8 numprocs = 1 autostart = true autorestart = true startsecs = 10 stopwaitsecs = 600 priority = 998
- Перечитать и обновить супервизор - sudo supervisorctl reread stack-celery-worker: available sudo supervisorctl update stack-celery-worker: added process group
- Основные команды - sudo supervisorctl status stack-celery-worker stack-celery-worker RUNNING pid 18020, uptime 0:00:50 sudo supervisorctl stop stack-celery-worker stack-celery-worker: stopped sudo supervisorctl start stack-celery-worker stack-celery-worker: started sudo supervisorctl restart stack-celery-worker stack-celery-worker: stopped stack-celery-worker: started
Celery + RabbitMQ с супервизором
Сельдерей требует брокера для обработки сообщений. Мы используем RabbitMQ, потому что его легко настроить, и он хорошо поддерживается.
Установите rabbitmq, используя следующую команду:
sudo apt-get install rabbitmq-server
По завершении установки создайте пользователя, добавьте виртуальный хост и установите разрешения.
sudo rabbitmqctl add_user myuser mypassword
sudo rabbitmqctl add_vhost myvhost
sudo rabbitmqctl set_user_tags myuser mytag
sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"
Чтобы запустить сервер:
sudo rabbitmq-server
Мы можем установить сельдерей с пипеткой:
pip install celery
В файле настроек Django settings.py ваш URL-адрес брокера будет выглядеть примерно так:
BROKER_URL = 'amqp://myuser:mypassword@localhost:5672/myvhost'
Теперь начните работу сельдерея
celery -A your_app worker -l info
Эта команда запускает работника Celery для выполнения любых задач, определенных в вашем приложении django.
Supervisor - это программа Python, которая позволяет вам контролировать и поддерживать любые процессы unix. Он также может перезапускать разбитые процессы. Мы используем его, чтобы убедиться, что работники сельдерея всегда работают.
Во-первых, Install supervisor
sudo apt-get install supervisor
Создайте файл your_proj.conf в вашем супервизоре conf.d (/etc/supervisor/conf.d/your_proj.conf):
[program:your_proj_celery]
command=/home/your_user/your_proj/.venv/bin/celery --app=your_proj.celery:app worker -l info
directory=/home/your_user/your_proj
numprocs=1
stdout_logfile=/home/your_user/your_proj/logs/celery-worker.log
stderr_logfile=/home/your_user/your_proj/logs/low-worker.log
autostart=true
autorestart=true
startsecs=10
После создания и сохранения нашего конфигурационного файла мы можем сообщить Супервизору нашей новой программы с помощью команды supervisorctl. Сначала мы советуем Supervisor искать любые новые или измененные конфигурации программ в каталоге /etc/supervisor/conf.d с:
sudo supervisorctl reread
Затем следуйте указаниям, чтобы внести изменения в:
sudo supervisorctl update
Когда наши программы будут запущены, несомненно, будет время, когда мы хотим остановить, перезапустить или увидеть их статус.
sudo supervisorctl status
Для перезапуска вашего экземпляра сельдерея:
sudo supervisorctl restart your_proj_celery