Airflow 气流1.10.0 branchpythonoperator运行失败:芹菜命令失败

Airflow 气流1.10.0 branchpythonoperator运行失败:芹菜命令失败,airflow,Airflow,我将气流dag示例示例分支dop操作器代码复制到我自己的dag test1\u v2,我可以成功运行示例分支dop操作器,但运行test1\u v2失败。 dag test1_v2代码\u HOME/dags/test1.py: import airflow from airflow.operators.python_operator import BranchPythonOperator from airflow.operators.dummy_operator import DummyOpe

我将气流dag示例示例分支dop操作器代码复制到我自己的dag test1\u v2,我可以成功运行示例分支dop操作器,但运行test1\u v2失败。 dag test1_v2代码\u HOME/dags/test1.py:

import airflow
from airflow.operators.python_operator import BranchPythonOperator
from airflow.operators.dummy_operator import DummyOperator
from airflow.models import DAG

args = {
    'owner': 'airflow',
    'start_date': airflow.utils.dates.days_ago(2),
    'depends_on_past': True,
}

dag = DAG(dag_id='test1_v2'
          schedule_interval='*/1 * * * *', default_args=args)


def should_run(ds, **kwargs):

    print('------------- exec dttm = {} and minute = {}'.
          format(kwargs['execution_date'], kwargs['execution_date'].minute))
    if kwargs['execution_date'].minute % 2 == 0:
        return "oper_1"
    else:
        return "oper_2"


cond = BranchPythonOperator(
    task_id='condition',
    provide_context=True,
    python_callable=should_run,
    dag=dag)

oper_1 = DummyOperator(
    task_id='oper_1',
    dag=dag)
oper_1.set_upstream(cond)

oper_2 = DummyOperator(
    task_id='oper_2',
    dag=dag)
oper_2.set_upstream(cond)
命令气流运行test1_v2条件2018-09-01 00:00:00,有工作日志:

[2018-10-11 21:20:29991]{cli.py:492}信息-在主机上运行 [2018-10-11 21:23:10879]{settings.py:174}INFO-setting.configure_orm:使用池设置。池大小=5,池回收=1800 [2018-10-11 21:23:11343]{init.py:51}信息-使用executor CeleryExecutor [2018-10-11 21:23:11572]{cli.py:478}信息-加载pickle id 26 回溯最近一次呼叫上次: 文件/home/airflow/airflow/venv/bin/airflow,第32行,in args.funcargs 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/afflow/utils/cli.py,第74行,在包装器中 返回f*args,**kwargs 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/afflow/bin/cli.py,第480行,运行中 DagPickle.filterDagPickle.id==args.pickle.first 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/sqlalchemy/orm/query.py,第2755行,第一行 ret=listself[0:1] getitem中的文件/home/airflow/airflow/venv/lib/python3.5/site-packages/sqlalchemy/orm/query.py,第2547行 返回列表 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/sqlalchemy/orm/loading.py,第90行,在实例中 util.raise\u from\u causeerr 文件/home/aiffair/aiffair/venv/lib/python3.5/site-packages/sqlalchemy/util/compat.py,第203行,从原因开始 reraisetypeexception,exception,tb=exc_tb,cause=cause 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/sqlalchemy/util/compat.py,第187行,在reraise中 增值 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/sqlalchemy/orm/loading.py,第75行,在实例中 rows=[prorow for fetch中的行] 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/sqlalchemy/orm/loading.py,第75行,in rows=[prorow for fetch中的行] 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/sqlalchemy/orm/load.py,第452行,在_实例中 已加载的\u实例、填充\u现有、填充器 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/sqlalchemy/orm/loading.py,第513行,完全填充 dict_[key]=getterrow 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/sqlalchemy/sql/sqltypes.py,第1540行,正在处理中 返回加载值 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/dill//u dill.py,第316行,加载中 返回loadfile,忽略 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/dill//u dill.py,第304行,已加载 obj=pik.load 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/dill//u dill.py,第465行,在find_类中 return StockUnpickler.find_classself、模块、名称 导入错误:没有名为“异常前缀”的模块d47cb71ac291be245f60c8ac0070d906f4627fa1\U测试1 [2018-10-11 21:23:11823:ERROR/ForkPoolWorker-6]execute_命令遇到被调用的进程错误 回溯最近一次呼叫上次: 文件/home/aiffair/aiffair/venv/lib/python3.5/site-packages/aiffair/executors/celery_executor.py,第60行,在execute_命令中 关闭_fds=True,env=env 文件/data/python35/lib/python3.5/subprocess.py,第271行,在check_调用中 引发被调用的进程错误代码,cmd subprocess.CalledProcessError:命令“气流运行测试1_v1条件2018-09-01T10:00:00+08:00-pickle 26-本地”返回非零退出状态1 [2018-10-11 21:23:11895:ERROR/ForkPoolWorker-6]无 [2018-10-11 21:23:12103:ERROR/ForkPoolWorker-6]任务气流执行器芹菜执行器执行命令[efb4ef09-bdf8-4123-85c8-4dc73dc19d74]引发意外:气流异常“芹菜命令失败”, 回溯最近一次呼叫上次: 文件/home/aiffair/aiffair/venv/lib/python3.5/site-packages/aiffair/executors/celery_executor.py,第60行,在execute_命令中 关闭_fds=True,env=env 文件/data/python35/lib/python3.5/subprocess.py,第271行,在check_调用中 引发被调用的进程错误代码,cmd subprocess.CalledProcessError:命令“气流运行测试1_v1条件2018-09-01T10:00:00+08:00-pickle 26-本地”返回非零退出状态1

在处理上述异常期间,发生了另一个异常:

回溯最近一次呼叫上次: 文件/home/aiffair/aiffair/venv/lib/python3.5/site-packages/芹菜/app/trace.py,第375行,在trace_任务中 R=retval=fun*args,**kwargs 文件/home/afflow/afflow/venv/lib/python3.5/site-packages/芹菜/app/trace.py,第632行,在受保护的_调用中 返回self.run*args,**kwargs 文件/home/aiffair/aiffair/venv/lib/python3.5/site-packages/aiffair/executors/celery_executor.py,第65行,在execute_命令中 raise AirflowException“芹菜命令失败” airflow.Exception.AirflowException:芹菜命令失败

为什么dag测试2_v1会失败?谢谢。

当我使用python_callable=range替换python_callable=should_run时,成功地运行了这个dag,所以我猜原因是气流找不到should_run,正如日志ImportError中所示:没有名为“异常前缀”的模块d47cb71ac291be245f60c8ac0070d906f4627fa1_test1

解决办法是:

如果您使用命令,您应该使用test1_v2-s 20180901-e 20180902-x 在气流调度器触发的情况下不存在此类问题