2016-10-19 7 views
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に提供していないことを確認してください。どんな考え?

答えて

0

すべてが正しく機能していたことが判明しましたが、スケジューラは再起動されていませんでした。スケジューラは明らかにまだ追加されたセクションを持たない古いairflow.cfgを使用していました。

関連する問題