mam serwer WWW działała prawidłowo, a mój plik powietrza-scheduler.service uruchamia program planujący i uzna moje DAG itp Jednak zadania nie są uruchomione:Airflow Systemd scheduler nie działa
widzę komunikat o błędzie o/bin/sh
ERROR - failed to execute task Command 'exec bash -c run'
mam plik sysconfig:
#!/bin/bash
PATH=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow
AIRFLOW_CONFIG=/mnt/var/airflow/airflow.cfg
AIRFLOW_HOME=/mnt/var/airflow
i mój plik powietrza-scheduler.service:
#!/bin/bash
[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service
Wants=postgresql.service
[Service]
EnvironmentFile=/etc/sysconfig/airflow
User=airflow
Group=airflow
Type=simple
ExecStart=/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow scheduler
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
Oto zapis journalctl który pokazuje błąd bash otrzymuję:
[2017-10-30 18:36:13,764] {base_executor.py:50} INFO - Adding to queue: airflow run user_presence_raw_etl transform_raw_user_presence 2017-10-30T14:00:00 --local -sd /mnt/var/airflow/dags/bin/user_p
Oct 30 18:36:13 airflow[4742]: [2017-10-30 18:36:13,765] {jobs.py:1443} INFO - Heartbeating the executor
Oct 30 18:36:13 airflow[4742]: [2017-10-30 18:36:13,783] {local_executor.py:45} INFO - LocalWorker running airflow run user_presence_raw_etl transform_raw_user_presence 2017-10-30T14:00:00 --local -sd /mnt/var/airflow/dags/bin/us
Oct 30 18:36:13 airflow[4742]: /bin/sh: 1: exec: bash: not found
Oct 30 18:36:13 airflow[4742]: [2017-10-30 18:36:13,865] {local_executor.py:52} **ERROR - failed to execute task Command 'exec bash -c 'airflow run** user_presence_raw_etl transform_raw_user_presence 2017-10-30T14:00:00 --local -sd /mnt/var/airf
Oct 30 18:36:14 airflow[4742]: [2017-10-30 18:36:14,786] {jobs.py:1407} INFO - Heartbeating the process manager
Oct 30 18:36:14 airflow[4742]: [2017-10-30 18:36:14,786] {dag_processing.py:559} INFO - Processor for /mnt/var/airflow/dags/bin/prod/hourly_agent_dag.py finished
Oct 30 18:36:14 airflow[4742]: [2017-10-30 18:36:14,789] {dag_processing.py:627} INFO - Started a process (PID: 5425) to generate tasks for /mnt/var/airflow/dags/bin/prod/daily_agent_email_dag.py - logging into /mnt/var/airflow/l
Oct 30 18:36:14 airflow[4742]: [2017-10-30 18:36:14,831] {jobs.py:1000} INFO - No tasks to send to the executor
Oct 30 18:36:14 airflow[4742]: [2017-10-30 18:36:14,832] {jobs.py:1443} INFO - Heartbeating the executor
Oct 30 18:36:14 airflow[4742]: [2017-10-30 18:36:14,833] {jobs.py:1195} INFO - Executor reports user_presence_raw_etl.transform_raw_user_presence execution_date=2017-10-30 14:00:00 as failed
Tak, mam środowisko (anakonda). Zazwyczaj uruchamiam przepływ powietrza, tworząc ekran, a następnie aktywuję źródło airflow_env, a następnie planer przepływu powietrza. Działa to w 100% przypadków. Mój plik .service wskazuje na środowisko wirtualne - być może nie jest aktywowany? Co mam zmienić? – trench
Możesz zobaczyć w moim przykładzie, plik usługi wskazuje na plik sysconfig, który wskazuje na PATH =/opt/anaconda/anaconda3/envs/airflow_env/bin/airflow. To jest ścieżka anakonda, którą normalnie uruchamiam program planujący na ekranie. – trench
Czy możesz spróbować dowiązać symbol '/ opt/anaconda/anaconda3/envs/airflow_env/bin/airflow' do katalogu, który istnieje w' $ PATH' np. '/ usr/local/bin'? Aby potwierdzić, że po uruchomieniu przepływu powietrza wszystko działa zgodnie z oczekiwaniami. Następnie możemy skupić się na tym, jak rozwiązać problem z definicją usługi. – s7anley