Как запустить сельдерей в качестве демона с помощью обычной команды celery

У меня есть приложение django, для которого я использую задачи сельдерея для выполнения некоторой обработки csv в фоновом режиме, поэтому я установил rabbitmq-server как sudo apt-get install rabbitmq-server, с помощью этой команды сервер rabbitmq был установлен и успешно запущен.

И у меня есть код задач сельдерея в модуле tasks.py внутри приложения, и я запускаю сельдерей, как показано ниже.

celery -A app.tasks worker --loglevel=info

который работал нормально и успешно выполнял CSV-файлы в фоновом режиме, но теперь я просто хочу демонизировать приведенную выше команду, и я искал любой вариант для ее демонизации, но я не нашел никаких аргументов для передачи, таких как -D, чтобы демонизировать вышеуказанную команду . Так есть ли способ демонизировать приведенную выше команду и запустить сельдерей?


person Shiva Krishna Bavandla    schedule 09.07.2014    source источник
comment
Я использую supervisorctl для достижения этого   -  person gogasca    schedule 05.02.2016


Ответы (2)


Я думаю, вы ищете вариант --detach. [1]

Но рекомендуется использовать что-то вроде systemd. В документах сельдерея есть целая страница по этой теме. [2]

[1] http://celery.readthedocs.org/en/latest/reference/celery.bin.base.html#daemon-options

[2] http://celery.readthedocs.org/en/latest/tutorials/daemonizing.html

person Fedalto    schedule 12.12.2014

Лучше всего подойдет supervisorctl.

Установка: sudo apt-get install supervisor

Основной конфигурационный файл супервизора находится здесь: /etc/supervisor/supervisord.conf

Запустите $vim /etc/supervisor/supervisord.conf для проверки. Заглянув в файл, внизу вы заметите:

[include]
files = /etc/supervisor/conf.d/*.conf

В основном это означает, что файлы конфигурации ваших проектов могут храниться здесь /etc/supervisor/conf.d/ и они будут автоматически включены.

Выполнить: sudo vim /etc/supervisor/conf.d/myapp.conf. Ваша конфигурация может выглядеть так:

[program:myapp]
command={{ your celery commands without curly braces }}
directory=/directory/to/myapp
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log

Чтобы перезапустить службу: $sudo service supervisor restart

Для повторного чтения после внесения обновлений в любой файл *.conf: $sudo supervisorctl reread

Для записи обновлений: $sudo supervisorctl update

Чтобы проверить статус определенного *.conf: sudo supervisorctl status myapp

Проверьте файлы журнала для получения дополнительных данных о состоянии.

person Olamigoke Philip    schedule 11.05.2021