Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 如何在发布/订阅消息时触发google composer DAG?_Google Cloud Platform_Airflow_Google Cloud Pubsub_Google Cloud Composer - Fatal编程技术网

Google cloud platform 如何在发布/订阅消息时触发google composer DAG?

Google cloud platform 如何在发布/订阅消息时触发google composer DAG?,google-cloud-platform,airflow,google-cloud-pubsub,google-cloud-composer,Google Cloud Platform,Airflow,Google Cloud Pubsub,Google Cloud Composer,Google cloud函数不能用于触发发布/订阅消息上的composer DAG 我试过这个传感器 pull_messages = PubSubPullSensor( task_id="pull_messages", ack_messages=True, project='xxxx', subscription='xxxx', ) 但这并没有像预期的那样触发DAG 如果您有任何关于在发布/订阅消息时触发DAG的帮助,我们将不胜感激。PUBSUBPULL传感器是

Google cloud函数不能用于触发发布/订阅消息上的composer DAG

我试过这个传感器

pull_messages = PubSubPullSensor(
    task_id="pull_messages",
    ack_messages=True,
    project='xxxx',
    subscription='xxxx',
)
但这并没有像预期的那样触发DAG


如果您有任何关于在发布/订阅消息时触发DAG的帮助,我们将不胜感激。

PUBSUBPULL传感器是DAG的一部分。dag需要运行才能执行传感器,这就是它无法工作的原因

我认为最具挑战性的方法是使用云功能,但如果不可能,第二种选择是使用另一台服务器(可能是GCP中的另一个计算选项:cloud AppEngine、cloud Run等)来接收发布/订阅消息并触发dag。基本上,与Pub/Sub+云函数的想法相同,没有函数

如果您不想采用这种方法,并且希望在同一个Composer环境中触发Dag,则可以在运行的Dag上使用
PubSubPullSensor
,并在需要时使用


这一思想有多种形式;然而,棘手的是需要在运行的dag中执行
PubSubPullSensor
。对此,一个可能的解决方案是安排dag经常运行,例如,通过“发布/订阅消息时不能使用Google cloud函数触发composer dag”您的意思是您的系统要求之一是不使用Google cloud函数?@Tlaquetzal是的,您是对的,我的系统要求是不能使用云功能,但必须在发布/订阅消息上触发DAG。我需要在发布/订阅消息通知上触发DAG,我会在另一台服务器上尝试这种方法,例如使用云函数。你可以把代码的核心用在其他地方。谢谢@Tlaquetzal。我遵循您建议的方法,可以将DAG安排5分钟,然后可以提取发布子消息,并且可以成功执行DAG中的下一个任务