气流DAG调度日期和时间

时间:2017-05-29 14:30:50

标签: airflow apache-airflow airflow-scheduler

我们已经将我们的cron工作转换为Airflow DAG,我很难弄清楚DAG的安排在Airflow中的确切运作方式。一些DAG需要在一天中的特定时间(即早上7点)运行,其他DAG需要在每月的特定日期/时间(即每月15日上午6点)运行。

通常,Airflow似乎正在每天运行DAG。因此,schedule_interval = '0 7 * * * 'start_date': datetime(2017,4,7)每天早上7点开始运行schedule_interval = '0 6 15 * *'

但是,对于每月DAG('start_date': datetime(2017,4,7)__init__.py : @app.route('/statistics',methods=['GET','POST']) def statsinput(): if request.method=='GET': return render_template("statsinput.html") else: first_name=(request.form['fname']) c, conn = connection() query="INSERT INTO test VALUES(%s)" c.execute(query,first_name) conn.commit() return ('working') statsinput.html: <!DOCTYPE html> <html> <body> <form method="POST"> First name: <input type="text" name="fname"><br> <input type="submit" value="Submit"> </form> </body> </html> Here is the description for my mysql table: mysql> DESCRIBE test; +--------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+----------+------+-----+---------+-------+ | ticker | char(50) | YES | | NULL | | +--------+----------+------+-----+---------+-------+ ),它在4月15日早上6点开始运行,但从那时起它没有运行。我试图按月计划的其他DAG同样在第一个月后无法运行。

关于日程安排的Airflow的文档,IMO,泥泞,其他SO问题的答案让我更加困惑。我希望有人可以澄清我的理解和我试图每月安排的DAG出了什么问题。

1 个答案:

答案 0 :(得分:6)

Airflow每月运行计划与其日常计划一致,令人困惑。因此,每月DAG的运行时间比您预期的要晚一个月。例如,如果我安排DAG在午夜的第一个月运行(例如0 0 1 * *),则执行execute_date 2018-04-01将在2018-05-01午夜之后实际运行。这是因为Airflow等待执行期间在运行之前完成。我认为这个想法是2018-04-01的每月执行代表整个2018-04-01到2018-05-01期间的数据。

您需要在考虑这一概念的情况下重新安排日程安排。

相关问题