LocalExecutor
을 사용하여 공기 흐름 1.8.0을 실행하는 EC2 인스턴스가 있습니다. 워드 프로세서 당 I는 다음과 같은 두 가지 명령 중 하나가 데몬 모드에서 스케줄러를 제기 할 것으로 예상했을 것이다 :공기 흐름 스케줄러를 데몬 프로세스로 실행하는 문제
airflow scheduler --daemon --num_runs=20
또는
airflow scheduler --daemon=True --num_runs=5
airflow scheduler: error: argument -D/--daemon: ignored explicit argument 'True'
입니다 :
[2017-09-28 18:15:02,794] {__init__.py:57} INFO - Using executor LocalExecutor
[2017-09-28 18:15:03,064] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python3.5/lib2to3/Grammar.txt
[2017-09-28 18:15:03,203] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python3.5/lib2to3/PatternGrammar.txt
이 두 번째 명령은 오류가 발생을 이상한 이유는 docs--daemon=True
이 airflow scheduler
호출에 유효한 인수 여야하기 때문입니다. 좀 더 깊이 파고
응답 중 하나가 this repo으로 사용할 수있는 코드에 따라 백그라운드 프로세스로 공기 흐름 스케줄러를 처리하기위한 systemd
의 구현을 권장 this StackOverflow post에 걸렸다.
가볍게 편집 한 스크립트의 수정본은 다음 GIST로 게시됩니다. 우분투 16.04.3와 바닐라 m4.xlarge의 EC2 인스턴스를 사용하고 있습니다 : 거기에서
- /etc/sysconfig/airflow
- /user/lib/systemd/system/airflow-scheduler.service
- /etc/tmpfiles.d/airflow.conf
내가 전화 :
sudo systemctl enable airflow-scheduler
sudo systemctl start airflow-scheduler
과 아무 반응이 없습니다. 이 인스턴스에서 훨씬 더 복잡한 DAG가 실행되는 동안 I am using this dummy case 간단한 테스트를 작성하여 스케줄러가 계획대로 작동 할 때 알려주는 수신기 역할을합니다.
디버그에는 journalctl -f
을 사용하고 있습니다. 다음은 스케줄러 프로세스의 몇 가지 출력입니다. 명백한 문제는 없지만 내 작업이 실행되지 않고 오류를 확대하는 데 도움이되는 테스트 DAG에 대한 로그가 생성되지 않습니다. 여기 어딘가에서 문제가 있습니까? 내가 airflow scheduler
을 실행하면
Sep 28 18:39:30 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:30,965] {dag_processing.py:627} INFO - Started a process (PID: 21822) to generate tasks for /home/ubuntu/airflow/dags/scheduler_test_dag.py - logging into /home/ubuntu/airflow/logs/scheduler/2017-09-28/scheduler_test_dag.py.log
Sep 28 18:39:31 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:31,016] {jobs.py:1002} INFO - No tasks to send to the executor
Sep 28 18:39:31 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:31,020] {jobs.py:1440} INFO - Heartbeating the executor
Sep 28 18:39:32 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:32,022] {jobs.py:1404} INFO - Heartbeating the process manager
Sep 28 18:39:32 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:32,023] {jobs.py:1440} INFO - Heartbeating the executor
Sep 28 18:39:33 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:33,024] {jobs.py:1404} INFO - Heartbeating the process manager
Sep 28 18:39:33 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:33,025] {dag_processing.py:559} INFO - Processor for /home/ubuntu/airflow/dags/capone_dash_dag.py finished
Sep 28 18:39:33 ip-172-31-15-209 airflow[20603]: [2017-09-28 18:39:33,026] {dag_processing.py:559} INFO - Processor for /home/ubuntu/airflow/dags/scheduler_test_dag.py finished
수동이 모두 잘 작동합니다. 내 테스트 DAG의 시작일은 9 월 9 일이므로 그 이후로 매분마다 백필을 계속 작성하여 실행 시간 기록표를 작성합니다. 그러나 systemd
을 사용하여 스케쥴러를 데몬 (deamon)으로 실행할 때, 명백한 오류의 출처가 없어 완전히 조용합니다.
의견이 있으십니까?
좋습니다.하지만이 문제는 해결되지 않습니다. daemonize 플래그없이'airflow scheduler'를 수동으로 실행할 때처럼 프로세스가 실행되고 있지 않습니다. 이게 뭐야? 'which airflow'는 이것을 생성합니다 :'/ home/우분투/.local/bin/airflow' – Aaron
당신이 경험 한 것이 무엇인지 알고 싶습니다. 'airflow scheduler -D'를 실행하면 airflow pretty print가 튀어 나오지만 프로세스가 실행되는 대신 터미널 프롬프트로 돌아갑니다. 나는 스케쥴러가 어디서 돌아가고 있는지 알려주는 PID가 주어지지 않았고, 내 프로세스가 실행되고 있지도 않다. 너 한테 무슨 일이 일어난거야? – Aaron
시작되지 않은 경우 $ AIRFLOW_HOME/airflow-scheduler.err을 확인하십시오. 시작되지 않은 오류가 있어야합니다 (pid 파일이 이미 존재하거나 백엔드 데이터베이스 또는 다른 어떤 곳에 연결할 수 없기 때문일 수 있습니다).). 예, 기류 배너를 인쇄 한 다음 백그라운드에서 시작합니다. 그래도 실행시킬 수 없다면'strace -f airflow scheduler -D'를 사용해보십시오. 왜 실패했는지 확인할 수 있습니다. – Tagar