簡體   English   中英

Airflow - 每 2 小時運行一次

[英]Airflow - Run a dag every 2h

我有一個在 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 秒加載一次數據。

我做錯了什么?

謝謝你的幫助!

您已將start date設置為 2021-04-01 並且在 dag 定義中未設置catchup ,因此默認情況下為true 如果您查看作業執行(轉到瀏覽 -> Dag 運行),您會發現 dag 運行自開始日期以來已開始,並且正在趕上 state。 您將看到從 2021-04-01 開始的execution date 如果您想跳過這些追趕運行,請在 dag arguments 中將catchup標記為False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM