繁体   English   中英

如何从 AWS SQS 触发 Airflow DAG?

[英]How to trigger Airflow DAG from AWS SQS?

我想根据 SQS 消息触发 Airflow DAD。 我对 Airflow 很陌生,但我认为应该这样做:

选项1

使用Airflow SQS 传感器 据我了解,这会等待 SQS 消息继续执行已触发的 DAG。 这是否意味着 DAG 总是需要运行并等待 SQS 消息捕获任何最终的新消息并进行处理? 这是否也意味着我应该在非常短的时间间隔内安排我的 DAG,以便当 SQS 消息由 DAG 处理时,会创建另一个 DAG 来处理下一个 SQS 消息?

选项 2

添加 lambda 或监视 SQS 消息的东西,并在需要时使用Airflow API触发 DAG。

最后,我想尽量减少触发 DAG 所需的交互次数,所以我想使用 Airflow 内置的方式来观看 SQS。

谢谢

这两个选项都有效,但是选项 2 基本上是传感器的替代实现。 我认为更好的解决方案是选项 1,并进行了一些修改:

使用SQSSensor但使用mode='reschedule'时,传感器每隔一段时间就会“唤醒”检查是否满足条件。 请注意,这不像sleep(x) 当不满足条件时,Airflow 将释放工作人员以执行其他需要运行的任务并将SQSSensor返回到调度队列。 您可以在文档中阅读有关传感器模式的更多信息。

from airflow.providers.amazon.aws.sensors.sqs import SQSSensor
SQSSensor(
    task_id='test_task',
    dag=dag,
    sqs_queue='your_queue',
    aws_conn_id='aws_default',
    mode='reschedule')

请注意,传感器将无限期运行,直到满足标准。 您可以在传感器任务上设置timeout (还有其他可能的超时原因,如集群策略和其他默认值,但这是另一个主题)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM