0
Airflow v1.7.1.3がairflow.cfg
へのアクセスを提供し、コードに埋め込まれていない設定値を配置することを利用しています。 DAGを表すfoobarDAG.py
クラスでエアフロースケジューラからDAGが開始されました
[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)
テストこの手動でPythonのプロンプトからは簡単です私たちは、airflow.cfg
ファイルの最初の行として、次のコメントを追加しました:私は上記の、airflow.cfg
の情報に期待するだけのものだ
>>> from foobarDAG import foobarList
…
>>> foobarList
['foo', 'bar']
。
airflow test foobarDAG fooBar 10-19-2016
任意の問題を報告しません:
は、我々はまた、直接DAGでテストを行ってきました。我々は1 DAGことをスケジュールするためのスケジューラを使用しようとすると問題がアップ作物:
:Web UIではairflow scheduler -d foobarDAG >& foobar_log.txt
が、私たちは「DAGS」セクションの先頭に以下を参照してください。それ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'
は、ここではエラーメッセージですスケジューラが
['foo']
セクションを
airflow.cfg
から取得してDAGに提供していないことを確認してください。どんな考え?