我们已经将我们的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出了什么问题。
答案 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期间的数据。
您需要在考虑这一概念的情况下重新安排日程安排。