簡體   English   中英

每 X 分鍾運行一次 Airflow DAG

[英]Running an Airflow DAG every X minutes

我正在使用LocalScheduler選項的 EC2 實例上使用氣流。 我調用了airflow schedulerairflow webserver ,一切似乎都運行良好。 也就是說,在將cron字符串提供給schedule_interval以“每 10 分鍾執行一次” '*/10 * * * *' ,默認情況下該作業將繼續每 24 小時執行一次。 這是代碼的標題:

from datetime import datetime
import os
import sys

from airflow.models import DAG
from airflow.operators.python_operator import PythonOperator

import ds_dependencies

SCRIPT_PATH = os.getenv('PREPROC_PATH')

if SCRIPT_PATH:
    sys.path.insert(0, SCRIPT_PATH)
    import workers
else:
    print('Define PREPROC_PATH value in environmental variables')
    sys.exit(1)

default_args = {
  'start_date': datetime(2017, 9, 9, 10, 0, 0, 0), #..EC2 time. Equal to 11pm hora México
  'max_active_runs': 1,
  'concurrency': 4,
  'schedule_interval': '*/10 * * * *' #..every 10 minutes
}

DAG = DAG(
  dag_id='dash_update',
  default_args=default_args
)

...

default_args僅用於填充傳遞給 DAG 中的運算符的參數。 max_active_runsconcurrencyschedule_interval都是用於初始化 DAG 的參數,而不是運算符。 這就是你想要的:

DAG = DAG(
  dag_id='dash_update',
  start_date=datetime(2017, 9, 9, 10, 0, 0, 0), #..EC2 time. Equal to 11pm hora México
  max_active_runs=1,
  concurrency=4,
  schedule_interval='*/10 * * * *', #..every 10 minutes
  default_args=default_args,
)

我之前也把它們混合在一起,所以作為參考(注意有重疊):

DAG 參數: https : //airflow.incubator.apache.org/code.html? highlight = dag#airflow.models.DAG 運營商參數: https : //airflow.incubator.apache.org/code.html#baseoperator

對於 >2.1 的氣流版本,您可以使用datetime.timedelta()對象:

DAG = DAG(
  dag_id='dash_update',
  start_date=datetime(2017, 9, 9, 10, 0, 0, 0),
  max_active_runs=1,
  concurrency=4,
  schedule_interval=timedelta(minutes=10),
  default_args=default_args,
)

處理 start_date 的另一個很酷的功能是days_ago

from airflow.utils.dates import days_ago

DAG = DAG(
  dag_id='dash_update',
  start_date=days_ago(2, minute=15), # would start 2 days ago at 00:15
  max_active_runs=1,
  concurrency=4,
  schedule_interval=timedelta(minutes=10),
  default_args=default_args,
)

暫無
暫無

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

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