[英]Running an Airflow DAG every X minutes
我正在使用LocalScheduler
選項的 EC2 實例上使用氣流。 我調用了airflow scheduler
和airflow 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_runs
、 concurrency
和schedule_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.