代码之家  ›  专栏  ›  技术社区  ›  Scott Skiles

如何将具有cron计划间隔的气流DAG转换为在美国/纽约运行?

  •  0
  • Scott Skiles  · 技术社区  · 7 年前

    05 */1 * * 1-5 . 或作为 Crontab Guru

    时区感知 ?

    previous question 在气流中的时区感知DAG上,但在答案或气流文档中,我不清楚如何从具有 start_date 具有 tzinfo schedule_interval 那就像是一份工作。

    我目前正在尝试将DAG与 my_dag.py 文件如下:

    from airflow import DAG
    from airflow.operators.bash_operator import BashOperator
    from datetime import datetime, timedelta
    import pendulum
    
    local_tz = pendulum.timezone("America/New_York")
    
    default_args=dict(
        owner = 'airflow',
        start_date=datetime(2018, 11, 7, 13, 5, tzinfo=local_tz), # 1:05 PM on Nov 7
        schedule_interval=timedelta(hours=1),
    )
    
    dag = DAG('my_test_dag', catchup=False, default_args=default_args)
    
    op = BashOperator(
        task_id='my_test_dag',
        bash_command="bash -i /home/user/shell_script.sh",
        dag=dag
    )
    

    然而,DAG从未被安排。我做错了什么?

    1 回复  |  直到 7 年前
        1
  •  2
  •   SMDC    7 年前

    支持使用cron表达式。 计划时间间隔 定义为DAG参数,最好接收cron表达式作为str或datetime.timedelta对象。或者,您也可以使用以下cron预置之一:无、@一次、@每小时、@每日、@每周、@每月、@每年。

    args=dict(
    owner = 'airflow',
    start_date=datetime(2018, 11, 7, 13, 5, tzinfo=local_tz), # 1:05 PM on Nov 7
    )
    
    dag=DAG(dag="dagname_here",
    default_args=args,
    schedule_interval='05 */1 * * 1-5' #should be string)
    

    供参考: Airflow Scheduling