Python 任务之间的延迟

Python 任务之间的延迟,python,airflow,directed-acyclic-graphs,airflow-scheduler,Python,Airflow,Directed Acyclic Graphs,Airflow Scheduler,正如您在图中所看到的:气流在任务执行之间占用了太多时间? 它几乎占DAG执行时间的30%。 我已将afflow.cfg文件更改为: job_heartbeat_sec = 1 scheduler_heartbeat_sec = 1 但我仍然有相同的延迟率 它为什么会这样做?这是设计的。例如,我使用气流执行大型工作流,其中一些任务可能需要很长时间。气流并不适用于需要几秒钟才能执行的任务,它当然可以用于执行这些任务,但可能不是最合适的工具 尽管如此,由于您已经找到了要配置的密钥设置,所以您所能做

正如您在图中所看到的:气流在任务执行之间占用了太多时间? 它几乎占DAG执行时间的30%。 我已将
afflow.cfg
文件更改为:

job_heartbeat_sec = 1 
scheduler_heartbeat_sec = 1
但我仍然有相同的延迟率


它为什么会这样做?

这是设计的。例如,我使用气流执行大型工作流,其中一些任务可能需要很长时间。气流并不适用于需要几秒钟才能执行的任务,它当然可以用于执行这些任务,但可能不是最合适的工具

尽管如此,由于您已经找到了要配置的密钥设置,所以您所能做的并不多

此外,您可能希望尝试增加计划程序的线程数:

   [scheduler]
   max_threads = 4
这也可以通过设置环境变量来实现:

AIRFLOW__SCHEDULER__MAX_THREADS=4

但是,不要指望延迟会减少那么多。

对于任务间延迟来说,30秒是相当高的。在我所看到的经过良好调优的环境中,即使对于具有数千个DAG的环境,任务和从属任务之间约4-6秒的间隔也是一个相当合理的下限

如前所述,增加调度程序心跳(
scheduler\u heartbeat\u sec
)和调度程序的线程数(
scheduler.max\u threads
)是减少调度延迟的最佳方法。如果您的任务在其他条件下被阻止(您可以在日志中查看;
core.logging\u level=DEBUG
了解更多信息),那么您应该首先解决这些问题


如果你已经调整了调度器的心跳和工作线程的数量,你仍然会看到高的调度延迟,那么你可能需要考虑使用一个更强大的机器。

嗨@ Hito,为什么它会有很长的延迟(大约30秒)。气流不能启动那么快吗?嗨,罗伯特,除了像OP中那样应用较低的心跳外,我不知道有什么方法可以加快速度。。但是,同样,如果您需要手动触发一个应该尽快(在几秒钟内)执行的任务,那么气流可能不是该作业的合适工具。。