Airflow 气流计划一天中多个计划的单个dag

Airflow 气流计划一天中多个计划的单个dag,airflow,airflow-scheduler,Airflow,Airflow Scheduler,我想要一个DAG从FTP下载数据,我不需要FTP中的所有数据,只需要某些文件。文件每天在一天中的特定时间上传,我想在FTP站点上提供这些文件后不久检索这些文件 Ex FTP时间表: /Data/US/XASE/yyyymmdd.csv #uploaded daily at 9:00 PM UTC /Data/EU/TRWB/yyyymmdd.csv #uploaded daily at 1:00 PM UTC ... /Data/EU/XEUR/yyyymmdd.csv #uploaded da

我想要一个DAG从FTP下载数据,我不需要FTP中的所有数据,只需要某些文件。文件每天在一天中的特定时间上传,我想在FTP站点上提供这些文件后不久检索这些文件

Ex FTP时间表:

/Data/US/XASE/yyyymmdd.csv #uploaded daily at 9:00 PM UTC
/Data/EU/TRWB/yyyymmdd.csv #uploaded daily at 1:00 PM UTC
...
/Data/EU/XEUR/yyyymmdd.csv #uploaded daily at 11:00 AM UTC

我如何在dag中设置调度程序,以便在上传数据时从FTP站点复制数据,而不是每次上传都有单独的dag?

我认为这里有三种调度选项

选项1

您在UTC时间上午11点、下午1点和晚上9点准时运行,时间安排如下
0 11,13,21***
。或者在整小时后5分钟添加一些缓冲区(
511,13,21***

选项2

您可以更定期地运行DAG,检查文件是否可用,然后在任务中下载它们。如果文件上传延迟的可能性更大,这是有意义的

例如,
*/10 10-22***
将在10:00-22:00之间每10分钟运行一次

选项3

每天安排一次DAG(
@一次
),然后使用。我认为这个选项是最不可取的,因为你有很多任务只是“等待”-这可能会阻止其他任务的执行

除此之外,它还很大程度上取决于您希望如何处理FTP本身的下载

我想您可以为每天要下载的每个文件创建一个任务,并将基于的任务放在前面,以避免多次尝试下载同一个文件


或者您将整个逻辑放入PythonOperator,其中包括一个仅根据
执行日期下载某些文件的逻辑

,这两个选项都会使FTP服务器过载。最好了解您计划使用哪个操作符。否则很难给出任何提示或提示。我对我的答案做了一些修改。选项3
TimeDeltaSensor
正是我所需要的