气流 - 每 2 小时运行一次 dag

时间:2021-06-03 22:41:06

标签: python airflow airflow-scheduler

我有一个在 MySQL 表中插入一些记录的 dag,我想每 2 小时运行一次我的 dag。为此,我有这个代码:

from datetime import timedelta, datetime
import pymysql
import airflow
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.operators import MySqlOperator

default_args = {
 'owner': 'airflow',
 'start_date': datetime(2021, 4, 1),
 'depends_on_past': False
}

dag = DAG(dag_id='mysql_insert',
          default_args=default_args,
          schedule_interval='* */2 * * *',
          dagrun_timeout=timedelta(seconds=5))

def mysql_conn(servername, user, password, database):
    conn = pymysql.connect(user=user
                           , password=password
                           , host=servername
                           , port=3306
                           , database=database)
    return conn

conn = mysql_conn('', '', '', '')

def insert_data():
    src_cursor = conn.cursor()
    src_cursor.execute("INSERT INTO my_table VALUES('NA',CURRENT_TIMESTAMP())")
    conn.commit()

task = PythonOperator(
     task_id='insert_records'
    ,python_callable=insert_data
    ,dag=dag)

task

但是,当我激活我的 dag 时,它每 10 秒加载一次数据。

我做错了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您已将 template <class T> class Tree { protected: //-------------------------------------------------------- // inner class Node // a single Node from a binary tree //-------------------------------------------------------- class Node { public: Node* left; Node* right; T value; Node(T val) : value(val), left(nullptr), right(nullptr) {} Node(T val, Node* l, Node* r) : value(val), left(l), right(r) {} }; //end of Node class Node* root; public: Tree() { root = nullptr; } // initialize tree bool isEmpty() const; void level() { _level(root); } ; private: void _level(Node* current); template<class T> inline void Tree<T>::_level(Node* current) { Queue<Node>* q = new QueueVector<Node>; if (root == nullptr) return; q->enqueue(root); while (!q->isEmpty()) { root = q->dequeue();//I can do this only if I store node if (root->left != nullptr) q->enqueue(root->left); if (root->right != nullptr) q->enqueue(root->right); } } 设置为 2021-04-01,并且 start date 未在 dag 定义中设置,因此默认情况下为 catchup。 如果您查看作业执行情况(转到浏览 -> Dag 运行),您会发现 dag 运行已从开始日期开始并处于追赶状态。从 2021-04-01 开始,您将看到 true。 如果您想跳过这些追赶运行,请在 dag 参数中将 execution date 标记为 catchup