是否仅在发生特定事件(例如将文件放入特定S3存储桶的事件)时才运行气流任务。类似于AWS Lambda事件
有S3KeySensor
,但我不知道它是否满足我的要求(仅在事件发生时才运行Task)
以下是使问题更清楚的示例:
我有一个如下的传感器对象
sensor = S3KeySensor(
task_id='run_on_every_file_drop',bucket_key='file-to-watch-*',wildcard_match=True,bucket_name='my-sensor-bucket',timeout=18*60*60,poke_interval=120,dag=dag
)
使用上述传感器对象,传感器任务的气流行为如下:
- 如果已经存在与之匹配的对象名称,则运行任务
S3存储桶
my-sensor-bucket
中的通配符,甚至早于DAG 在气流管理用户界面中切换了ON
(我不想运行该任务,因为 到过去的s3对象) - 运行一次后,传感器任务将不会再次运行
是一个新的S3文件对象放置(我想每次在存储桶
my-sensor-bucket
中放置一个新的S3文件对象时,都在DAG中运行传感器任务和后续任务) - 如果配置计划程序,则任务将根据计划运行 但不是基于事件。所以调度程序似乎不是这个的选择 情况
我试图了解气流中的任务是否只能基于调度(例如cron作业)或传感器(仅基于传感标准一次)运行,还是不能像基于事件的管道一样进行设置(类似于AWS) Lambda)