【问题标题】:Scheduling update functions in Django and Heroku?在 Django 和 Heroku 中安排更新功能?
【发布时间】:2023-03-26 18:13:02
【问题描述】:

我正在开发一个项目,将部署在 Django 中的 Heroku 上,该项目有大约 12 个更新功能。每次运行大约需要 15 分钟。我们称它们为 update1()、update2()...update10()。

我正在 Heroku 上部署一个工作人员测功机,我想一次运行 n 个或更多这些(它们不是真正的计算密集型,它们都是 HTML 解析器,但数据是时间敏感的,所以我希望他们尽可能多地被调用)。

我已经阅读了很多 Celery 和 APScheduler 文档,但我不确定哪个对我来说最好/最简单。如果时间相互重叠,计划任务是否会同时运行(即,如果我每 2 分钟运行一个,每 3 分钟运行另一个,还是等到每个任务完成?)

有什么方法可以让这些函数排队,至少有几个函数同时运行?此用例的建议同时调用数是多少?

【问题讨论】:

    标签: python django heroku celery


    【解决方案1】:

    根据您的用例描述,您不需要调度程序,因此 APScheduler 不能很好地满足您的要求。

    除了工人测功机之外,您还有网络测功机吗?此类处理的通常设计模式是设置一个接受请求的控制线程或控制进程(您的网络测功机)。然后将这些请求放入请求队列中。

    此队列由一个或多个工作线程或工作进程(您的工作人员测功机)读取。我没有与 Celery 合作过,但它看起来符合您的要求。根据您的描述,很难确定您需要多少工作线程或工作测功机。您还需要指定每秒需要处理多少更新请求。此外,您需要指定请求是受 CPU 限制还是 IO 限制。

    【讨论】:

      猜你喜欢
      • 2017-02-21
      • 2013-02-12
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      相关资源
      最近更新 更多