Использование systemd для запуска воздушного потока в среде conda

734
kadu

Я настроил сервер Airflow, установленный в среде conda, для запуска некоторых запланированных автоматизаций. В настоящее время я запускаю планировщик, рабочие и веб-сервер напрямую nohup, но я бы хотел использовать systemd для более надежного управления им.

Однако у меня возникли проблемы с запуском системы systemctl start. Я добавил в свой .serviceфайл следующее:

ExecStartPre=. /etc/profile ; /home/shared/miniconda2/bin/conda activate airflow ExecStart=/home/shared/miniconda2/envs/airflow/bin/airflow webserver --pid /run/airflow/webserver.pid 

(где shared/нет пользователя, просто папка, внутри /home/которой все пользователи имеют доступ)

ExecStartairflowдля активации требуется среда conda, в которой фактически установлен поток воздуха. Для этого я добавил две команды ExecStartPre: вторая фактически активирует эту среду. Запуск только этого возвращает CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'., поэтому я добавил первый, чтобы убедиться, /etc/profile.d/conda.shчто загружен.

Однако, это все еще терпит неудачу, по-видимому, пытаясь запустить Сервер Gunicorn:

Running the Gunicorn Server with: Workers: 4 sync Host: 0.0.0.0:8080 Timeout: 120 Logfiles: - - ================================================================= Traceback (most recent call last): File "/home/shared/miniconda2/envs/airflow/bin/airflow", line 28, in <module> args.func(args) File "/home/shared/miniconda2/envs/airflow/lib/python2.7/site-packages/airflow/bin/cli.py", line 844, in webserver gunicorn_master_proc = subprocess.Popen(run_args) File "/home/shared/miniconda2/envs/airflow/lib/python2.7/subprocess.py", line 390, in __init__ errread, errwrite) File "/home/shared/miniconda2/envs/airflow/lib/python2.7/subprocess.py", line 1025, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory 

(временные метки опущены, чтобы немного улучшить читаемость)

Это поднимает ряд вопросов:

  • Что может вызвать сбой моего сервиса?
  • Моя установка бессмысленна (systemd + conda + airflow)?
  • Если это бессмысленно, есть ли лучший способ обеспечить более надежную работу воздушного потока, чем запускать его напрямую? Меня особенно интересовали опции enableи restart, которые предлагает systemd.
3

0 ответов на вопрос

Похожие вопросы