[英]How to trigger Airflow DAG from AWS SQS?
我想根据 SQS 消息触发 Airflow DAD。 我对 Airflow 很陌生,但我认为应该这样做:
使用Airflow SQS 传感器。 据我了解,这会等待 SQS 消息继续执行已触发的 DAG。 这是否意味着 DAG 总是需要运行并等待 SQS 消息捕获任何最终的新消息并进行处理? 这是否也意味着我应该在非常短的时间间隔内安排我的 DAG,以便当 SQS 消息由 DAG 处理时,会创建另一个 DAG 来处理下一个 SQS 消息?
添加 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.