气流:任务调度间隔数秒,两次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了气流:任务调度间隔数秒,两次相关的知识,希望对你有一定的参考价值。

我试图每天仅在00:15:00(午夜15分钟)运行一次DAG,但是,它被安排了两次,相隔几秒钟。

dag = DAG(
    'my_dag',
    default_args=default_args,
    start_date=airflow.utils.dates.days_ago(1) - timedelta(minutes=10),
    schedule_interval='15 0 * * * *',
    concurrency=1,
    max_active_runs=1,
    retries=3,
    catchup=False,
)

Dag的主要目标是检查新电子邮件,然后检查SFTP目录中的新文件,然后运行“合并”任务以将这些新文件添加到数据库中。

[所有工作都是Kubernetes容器:

email_check = KubernetesPodOperator(
    namespace='default',
    image="g.io/email-check:0d334adb",
    name="email-check",
    task_id="email-check",
    get_logs=True,
    dag=dag,
)
sftp_check = KubernetesPodOperator(
    namespace='default',
    image="g.io/sftp-check:0d334adb",
    name="sftp-check",
    task_id="sftp-check",
    get_logs=True,
    dag=dag,
)
my_runner = KubernetesPodOperator(
    namespace='default',
    image="g.io/my-runner:0d334adb",
    name="my-runner",
    task_id="my-runner",
    get_logs=True,
    dag=dag,
)
my_runner.set_upstream([sftp_check, email_check])

因此,问题在于DAG scheduled似乎有几秒钟的间隔。它们不会同时运行,但是第一个完成后,第二个开始,my_runner作业准备每天仅运行一次:它试图创建一个以日期为后缀的文件,并且如果文件已经存在,它将引发异常。

有一个第一次运行已安排为“ 00:15之后22秒”(很好,有时它在这里和那里变化几秒钟),然后有第二个似乎总是被安排了58在世界标准时间00:15之后的秒数](至少根据它们的名称而定)。因此,第一个运行正常,似乎没有其他运行。。。一旦运行结束,第二个运行就开始了。

一个“好”的人:

enter image description here

一个“坏”的人:

enter image description here

答案

您可以检查计划间隔参数吗?schedule_interval = '15 0 * * * *'。 Cron时间表仅包含5个参数,我看到了一个额外的星星。另外,您可以确定开始日期吗?start_date:datetime(2019,11,10)

以上是关于气流:任务调度间隔数秒,两次的主要内容,如果未能解决你的问题,请参考以下文章

quartz 任务调度问题,每次都执行两次 相隔只有几微秒

quartz 任务调度问题,每次都执行两次 相隔只有几微秒

是否可以同时进行气流回填和调度?

scheduletask任务调度(2间隔时间)

气流调度程序不断崩溃,数据库连接错误(谷歌作曲家)

我需要一个允许以不同间隔执行任务的 Nodejs 调度程序 [关闭]