Google cloud platform 如果导入Google.cloud.storage,则无法在Google Composer上部署DAG

Google cloud platform 如果导入Google.cloud.storage,则无法在Google Composer上部署DAG,google-cloud-platform,google-cloud-storage,Google Cloud Platform,Google Cloud Storage,由于某些原因,如果在DAG中导入Google.cloud.storage,我无法在Google Composer上部署DAG文件。如果我试图部署这样一个DAG文件,那么它不会被添加到DagBag中,因此在Airflow网站中会出现一个非链接条目,因此不可用。此时,通常的信息图标显示:此DAG在web服务器的DagBag对象中不可用。它显示在此列表中,因为调度程序在元数据数据库中将其标记为活动。与实际语法错误不同,页面顶部没有错误消息 我把这个问题归结为是否导入google.cloud.stora

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

如果在DAG或自定义运算符中需要PyPi包,则不会收到错误消息,DAG不会部署。如果您得到了这个,那么请确保您需要的所有软件包都安装在Composer环境中


请注意,存在然后不存在的行为仍然存在,但在一段时间后确实解决了

请为您的Cloud Composer环境添加PyPI包好吗?我想知道你使用的是什么版本的存储包。啊,谢谢你,鲁本,我没想到这些包不在那里,因为这是谷歌自己的部署。添加这些包可以很好地工作。遗憾的是没有错误信息,只有“dunt werk!”在我的例子中,我甚至安装了pypi包(谷歌云存储),但它仍然不工作@基夫索普