gpt4 book ai didi

django - Heroku Scheduler - 为什么要对长时间运行的作业进行排队

转载 作者:行者123 更新时间:2023-12-02 07:16:27 24 4
gpt4 key购买 nike

Heroku Scheduler documentation说:

Scheduled jobs are meant to execute short running tasks or enqueue longer running tasks into a background job queue. Anything that takes longer than a couple of minutes to complete should use a worker process to run

如果调度程序为这些作业启动一个新的 dyno,并且 dyno 与工作线程的成本相同,那么将任务添加到队列并让工作进程运行它有什么优势?

最佳答案

这是一种架构最佳实践,仅在调度程序任务(或您自己的自定义时钟进程)上调度而不执行间隔任务。 scheduled jobs 中解释了这样做的动机。文章,但总而言之,您希望调度程序进程/任务尽可能轻量,因为应该只有其中一个。当您开始执行重载调度时,您经常会遇到调度冲突和不稳定的行为。

想象一个间隔作业挂起,或者花费的时间比预期长得多。如果您的间隔足够紧,这将开始导致积压,并且 future 的间隔可能会被推迟或一起跳过。

此外,明智的做法是尽可能分离组件的职责 - 不要让单个组件负责正交任务。这是一种常见的设计实践,通过保持调度和执行独立来反射(reflect)在调度作业用例中。

除了最佳实践之外,如果您处于开发或引导模式并且了解上述后果,您当然可以选择忽略此类建议并在调度程序任务中运行所有内容。只是要小心难以调试的作业冲突或明显的重复。

关于django - Heroku Scheduler - 为什么要对长时间运行的作业进行排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11134070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com