Airflow 我们应该让气流调度器运行多长时间?

Airflow 我们应该让气流调度器运行多长时间?,airflow,airflow-scheduler,Airflow,Airflow Scheduler,我对airflow如何通过调度程序获取新DAG代码中的更改感到非常困惑。 有人能澄清气流调度器如何使用新代码吗?每次更改DAG中的代码时,是否需要停止并重新运行气流计划程序?或者我可以只设置--num_runs 1并在每次进行新更改时运行它吗 谢谢 计划程序应该一直在运行。您应该只运行气流调度器,而不使用num\u runsparam。调度器被设计成一个长时间运行的进程,一个无限循环。它协调正在进行的工作,它是气流的核心。如果它没有运行,您就没有安排更多的工作要做 循环的每次迭代都将重新加载所谓

我对airflow如何通过调度程序获取新DAG代码中的更改感到非常困惑。 有人能澄清气流调度器如何使用新代码吗?每次更改DAG中的代码时,是否需要停止并重新运行气流计划程序?或者我可以只设置
--num_runs 1
并在每次进行新更改时运行它吗


谢谢

计划程序应该一直在运行。您应该只运行
气流调度器
,而不使用
num\u runs
param。调度器被设计成一个长时间运行的进程,一个无限循环。它协调正在进行的工作,它是气流的核心。如果它没有运行,您就没有安排更多的工作要做


循环的每次迭代都将重新加载所谓的
DagBag
,即加载的dag的集合。对DAG的任何修改以及DAG的删除/添加都应反映在下一个调度程序循环中。

Airflow的调度程序定期、连续地检查DAG位置,以扫描和刷新DAG。如果您没有更改配置,则只需在每一轮之间暂停几秒钟即可完成

引入
--num_run
参数不是为了刷新,而是为了可靠性:
Airflow正式建议使用
num\u runs
和/或
run\u duration
配置参数频繁重新启动计划程序。

谢谢!如果我错了,请纠正我:如果更改发生在DAG文件中,
scheduler
将拾取它们;但是如果代码更改发生在导入的文件(插件、操作符)中,那么我们需要停止并重新启动
调度程序。是这样吗?不,调度程序也会接收它们,我相信是通过分叉过程。如果您将代码更改直接添加到您的主页中,则永远不需要重新启动计划程序来获取代码更改。还有更高级的用例,例如如果您在docker容器中运行airflow,更新容器将导致调度程序重新启动(天文学家,这就是我们为自己和我工作的客户运行它们的方式)。“调度程序应该一直运行”不是真的。例如,您可以在这里找到一个非常老的未解决的错误,气流本身建议使用调整(例如“run_duration”)进行修复purposes@marioquark在这个问题的背景下,这是真的。无需重新启动计划程序来获取DAG中的更改,因此应保持运行。我的意图是澄清关于调度程序如何工作的困惑,而不是暗示调度程序永远不应该因为任何原因重新启动。Airflow在调度程序中的错误突然之间不再调度与此问题无关。另一方面,即使Web服务器重新启动,Airflow也无法获取DAG中的更改和更新。因此,在我们的部署例程中,我们实现了两个组件的重新启动,即Web服务器和调度程序。我还遇到了一些问题,需要重新启动调度程序/Web服务器以获取新添加的dag。有人对此有线索吗?你提供的链接已经失效了。