由于某种原因,如果我在DAG中导入google.cloud.storage,则无法在Google Composer上部署DAG文件。如果我尝试部署此类DAG文件,则不会将其添加到DagBag中,因此最终在Airflow网站上显示为非链接条目,因此无法使用。此时,通常会显示信息图标:该DAG在Web服务器的DagBag对象中不可用。它显示在此列表中,因为调度程序在元数据数据库中将其标记为活动状态。与实际的语法错误不同,页面顶部没有错误消息。
对于是否要导入google.cloud.storage,我已将其归结为准确的解释。甚至我是否真的使用过它。例如,如果我注释掉存储导入行,则此dag可以很好地工作,如果替换它,则不会在Composer中安装。有谁知道为什么?
import datetime
from airflow import DAG
from google.cloud import storage
from airflow.operators.python_operator import PythonOperator
default_args = {
'owner': 'Airflow',
'depends_on_past': False,
'email': ['kevin@here.com'],
'email_on_failure': True,
'email_on_retry': True,
'retries': 1,
'retry_delay': datetime.timedelta(minutes=5),
'start_date': datetime.datetime(2017,1,1),
}
def ingest_file(**kwargs):
status = 'OK'
return status
# Not scheduled, trigger only
dag = DAG('ingest_test', default_args=default_args, schedule_interval=None)
ingest = PythonOperator(task_id = 'ingest', provide_context = True,
python_callable = ingest_file, dag = dag)
答案 0 :(得分:0)
如果您在DAG或自定义操作员中需要PyPi软件包,则不会收到错误消息,则DAG不会部署。如果要这样做,请确保将所需的所有软件包都安装在Composer环境中。
请注意,存在然后不存在的行为仍然存在,但实际上会在不久后稳定下来。