3
エアフローのインストールでPython Operator Exampleを実行しようとしました。このインストールでは、同じマシン上にWebサーバー、スケジューラー、ワーカーが配備されており、PytohnOperator以外のすべてのタスクに対して不満なく実行されます。タスクは失敗し、モジュール "unusual_prefix_ *"をインポートできないと不平を言います。*はDAGを含むファイルの名前です。unusual_prefix_ *という名前のモジュールがありません。
フルスタックトレース:私はエラーを処分したdonot_pickle=True
オプション(see Documentation)を使用して
['/usr/bin/airflow', 'run', 'tutorialpy', 'print_the_context', '2016-08-23T10:00:00', '--pickle', '90', '--local']
[2016-08-29 11:35:20,054] {__init__.py:36} INFO - Using executor CeleryExecutor
[2016-08-29 11:35:20,175] {configuration.py:508} WARNING - section/key [core/fernet_key] not found in config
Traceback (most recent call last):
File "/usr/bin/airflow", line 90, in <module>
args.func(args)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/airflow/bin/cli.py", line 214, in run
DagPickle).filter(DagPickle.id == args.pickle).first()
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2659, in first
ret = list(self[0:1])
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2457, in __getitem__
return list(res)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/sqlalchemy/orm/loading.py", line 86, in instances
util.raise_from_cause(err)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 202, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/sqlalchemy/orm/loading.py", line 71, in instances
rows = [proc(row) for row in fetch]
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/sqlalchemy/orm/loading.py", line 428, in _instance
loaded_instance, populate_existing, populators)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/sqlalchemy/orm/loading.py", line 486, in _populate_full
dict_[key] = getter(row)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/sqlalchemy/sql/sqltypes.py", line 1253, in process
return loads(value)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/dill/dill.py", line 260, in loads
return load(file)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/dill/dill.py", line 250, in load
obj = pik.load()
File "/usr/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
File "/usr/lib/python2.7/pickle.py", line 1090, in load_global
klass = self.find_class(module, name)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/dill/dill.py", line 406, in find_class
return StockUnpickler.find_class(self, module, name)
File "/usr/lib/python2.7/pickle.py", line 1124, in find_class
__import__(module)
ImportError: No module named unusual_prefix_tutorialpy
[2016-08-29 11:35:20,498: ERROR/Worker-1] Command 'airflow run tutorialpy print_the_context 2016-08-23T10:00:00 --pickle 90 --local ' returned non-zero exit status 1
[2016-08-29 11:35:20,502: ERROR/MainProcess] Task airflow.executors.celery_executor.execute_command[01152b52-044e-4361-888c-ef2d45983c60] raised unexpected: AirflowException('Celery command failed',)
Traceback (most recent call last):
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/celery/app/trace.py", line 240, in trace_task
R = retval = fun(*args, **kwargs)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/celery/app/trace.py", line 438, in __protected_call__
return self.run(*args, **kwargs)
File "/opt/mf-airflow/airflow/lib/python2.7/site-packages/airflow/executors/celery_executor.py", line 45, in execute_command
raise AirflowException('Celery command failed')
AirflowException: Celery command failed
構成で参照されるピクルされたファイルには、このシステムでは使用できないカスタムモジュール/クラスからのこのアイテムへの参照が含まれている可能性があります。このファイルの場所と場所を見つけ出し、スタックなしでスタックを再起動して、問題が解決するかどうか確認してください。 – metatoaster
@metatoaster:あなたは 'WARNING - section/key'に関する行を意味すると思います。これは問題ではない、私は必要な設定を追加し、何も変更していない。しかし、そうすることで、少なくとも一時的な回避策が見つかりました。これを回答として投稿します。 – nik
いいえ、そうではありませんが、具体的には何らかの理由で気流が存在しないモジュール/クラスによって実装されているオブジェクトを選んだということです。これはpickleファイルのロードが問題であるため、 'donot_pickle = True'が動作する理由です。Pythonのインストールがモジュールを見つけることができないオブジェクトが含まれています(スタックトレース全体、特に最後を参照)。 – metatoaster