0
Airflow v1.7.1.3이 airflow.cfg
에 액세스하여 코드에 포함되지 않고 일부 구성 값을 배치 할 수 있다는 장점을 이용하고 있습니다. 나는 다음과 같은 않는 DAG를 나타내는 foobarDAG.py
클래스에서DAG airflow.cfg에서 값을 찾지 못했습니다.
[foo]
bar = foo
bar
:
from airflow.configuration import conf
…
def fooBar():
pass
foobarList = conf['foo']['bar'].split('\n')
foobarOperator = PythonOperator(
task_id='fooBar',
provide_context=True,
python_callable=fooBar,
op_args=[foobarList],
dag=dag)
시험이 수동으로 파이썬 프롬프트에서 쉽게 우리하여 먼저 airflow.cfg
파일의 선으로 다음을 추가 :
>>> from foobarDAG import foobarList
…
>>> foobarList
['foo', 'bar']
위의 정보는 위의 airflow.cfg
에 대한 정보입니다.
airflow test foobarDAG fooBar 10-19-2016
문제를보고하지 않습니다
우리는 또한 직접 DAG에서 테스트를 수행했습니다. : 웹 UI에서airflow scheduler -d foobarDAG >& foobar_log.txt
, 우리는은 "DAG를"섹션의 상단에있는 다음을 참조하십시오 : 우리는 하나 DAG을 예약 스케줄러를 사용하려고하면
는문제는 돌발 그것은 appea 그래서 이상한
[2016-10-19 14:56:09,028] {models.py:250} ERROR - Failed to import: /path/to/foobarDAG.py
Traceback (most recent call last):
File "/path/to/airflow/models.py", line 247, in process_file
m = imp.load_source(mod_name, filepath)
File "/path/to/anaconda3/envs/foobarenv/lib/python3.5/imp.py", line 172, in load_source
module = _load(spec)
File "<frozen importlib._bootstrap>", line 693, in _load
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 662, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "/path/to/foobarDAG.py", line 67, in <module>
foobarList = conf['foo']['bar'].split('\n')
File "/path/to/anaconda3/envs/foobarenv/lib/python3.5/configparser.py", line 956, in __getitem__
raise KeyError(key)
KeyError: 'foo'
:
그리고 foobar_log.txt
에서
Broken DAG: [/path/to/…/foobarDAG.py] 'foo'
, 여기에 오류 메시지입니다 rs는
['foo']
섹션을
airflow.cfg
에서 검색하지 않고 DAG에 제공합니다. 왜 그런가?