如果我导入google.cloud.storage

时间:2018-09-10 16:11:39

标签: google-cloud-platform google-cloud-storage

由于某种原因,如果我在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)

1 个答案:

答案 0 :(得分:0)

如果您在DAG或自定义操作员中需要PyPi软件包,则不会收到错误消息,则DAG不会部署。如果要这样做,请确保将所需的所有软件包都安装在Composer环境中。

请注意,存在然后不存在的行为仍然存在,但实际上会在不久后稳定下来。