В этом эпизоде мы запекали работника сельдерея и инструмент «Планировщик» в приложение SHIV. Это еще один шаг на пути к упрощению набора инструментов на производственном сервере.
Я начал поток, просмотрев рефакторинг, который я сделал, чтобы проводник/main.py
Анкет Основной файл используется для отправки в разные инструменты с помощью пакета Shiv.
Рефакторированная версия может передавать контроль над стрельцом, инструментами управления Django или сельдерея.
Чтобы сделать сельдерей, мы зацепили Работник_main
к функции отправки сельдерея.
Однажды Работник_main
Был установлен, я сгенерировал новое локальное приложение SHIV, чтобы протестировать вещи. Поскольку тестирование может потребовать создания приложения несколько раз, мы взяли обход, чтобы сделать Package.sh
проще в использовании локально.
Прежде чем мы начали, сценарий упаковки работал только в непрерывной интеграции. Я изменил некоторые пути, чтобы посмотреть где -то только при запуске CI. Вспоминая, как сделать Bash Если
Заявления удивительно сложны для меня.
if [ -n "${CI}" ]; then VENV=venv/bin/ fi
Чтобы создать новую версию пакета для тестирования, мы запустили:
$ rm -f conductor-abcd.pyz && CIRCLE_SHA1=abcd package.sh
Собирая команды вместе, очень быстро извлечь эту команду из истории и запустить все шаги в одной строке.
Благодаря нашему тестируемому пакету мы запустили сельдерей с различными вариантами. Когда я закончил, мы остановились на призыве, который выглядел как:
$ /srv/apps/conductor.pyz celery \ --loglevel INFO \ --concurrency 2 \ --beat \ --schedule /tmp/celerybeat-schedule \ --pidfile /tmp/celerybeat.pid
Этот набор параметров позволяет нам запустить работника сельдерея вместе с инструментом планировщика битов.
Чтобы закончить проблему GitHub, мы развернули это для постановки и проверки процессов. Мы смотрели на процессы сельдерея с:
$ ps -ef | grep celery
Из этого вывода я объяснил, как работают идентификаторы процессов (PID) и родительские идентификаторы процессов (PPIDS), и я рассказал, как сельдерей создает несколько процессов для повышения параллелизма.
В следующий раз нам нужно сделать аналогичный процесс с инструментом резервного копирования на основе Python, Wal-E. Мы позвоним Wal-E из приложения SHIV, чтобы устранить последнее использование установленной виртуальной среды.
Показать заметки для этого потока в Эпизод 31 Показать заметки Анкет
Чтобы узнать больше о потоке, пожалуйста, проверьте Строительство SaaS с Python и Django Анкет
Оригинал: “https://dev.to/mblayman/celery-in-a-shiv-app-building-saas-31-1j56”