[英]Airflow's DAG runs multiple times in one minute, although it was scheduled to run every 5 minutes
我創建了一個DAG,該DAG計划使用cron語法每5分鍾執行一次。 同樣,該池是為此dag創建的,僅具有單個插槽。
我試圖重新啟動服務器/調度程序並重置數據庫。 當前,DAG在UTC時間運行。 另外,我試圖設置我的本地時區,即“歐洲/明斯克”(UTC + 3),但不起作用。
import random
import time
import airflow
from airflow.models import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': airflow.utils.dates.days_ago(2),
'email': ['airflow@example.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
'pool': 'download',
# 'priority_weight': 10,
# 'queue': 'bash_queue',
}
params = {
'table': 'api_avitoimage',
}
dag = DAG(
dag_id='test_download_avitoimage',
default_args=default_args,
schedule_interval='*/5 * * * *',
)
def sleep_for_a_bit(random_base):
time.sleep(random_base)
with dag:
download = BashOperator(
task_id='download',
bash_command='/usr/bin/python3 /home/artur/downloader.py --table {{ params.table }}',
params=params,
dag=dag)
sleep = PythonOperator(
task_id='sleep_for_a_bit',
python_callable=sleep_for_a_bit,
op_kwargs={'random_base': random.uniform(0, 1)},
dag=dag,
)
download >> sleep
問題: DAG每分鍾運行約2-3次,這完全是不正確的執行。 編輯:碰巧同時有16/16個活動DAG運行。但是我不明白這個“魔術數字16”來自何處。
默認情況下,Airflow嘗試完成自start_date
以來的所有“缺失” DAG。 由於您的start_date
設置為airflow.utils.dates.days_ago(2)
,因此Airflow在開始按計划啟動DAG之前將運行576次DAG。 您可以通過在DAG定義中添加catchup = False
來關閉它(而不是default_args)。
幻數16來自參數max_active_runs_per_dag = 16
(默認設置)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.