2016-08-30 4 views
3

공기 흐름 설치시 Python Operator Example을 실행하려고했습니다. 설치시 동일한 컴퓨터에 웹 서버, 스케줄러 및 작업자가 배포되고 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 
+1

구성에서 참조하는 피클링 된 파일에이 시스템에서 사용할 수없는 사용자 지정 모듈/클래스의이 항목에 대한 참조가 포함되어있을 가능성이 높습니다. 이 파일의 위치와 위치를 확인하고 스택없이 파일을 다시 시작하여 문제가 없는지 확인하십시오. – metatoaster

+0

@metatoaster : 나는 당신이'WARNING - section/key'에 관한 내용을 의미했다고 생각합니다. 이건 문제가 아니에요, 필요한 설정을 추가하고 아무것도 변경하지 않았다. 그러나 그렇게함으로써 적어도 임시 해결책을 찾았습니다. 답으로 게시 할 것입니다. – nik

+0

아니, 그게 아니지만, 그 이유는 무엇이든간에 공기 흐름은 존재하지 않는 모듈/클래스에 의해 구현 된 객체를 골랐다는 것입니다. 이것은 pickle 파일의 로딩이 문제이기 때문에'donot_pickle = True'가 작동하는 이유이기도합니다. 파이썬의 설치가 모듈을 찾을 수없는 객체를 포함하고 있습니다. – metatoaster

답변

2

. 아마 가장 좋은 해결책은 아니지만 제 시나리오에는 충분히 좋습니다.

관련 문제