【问题标题】:Spread Celery Django tasks out over 24 hours在 24 小时内传播 Celery Django 任务
【发布时间】:2019-08-07 09:18:03
【问题描述】:

我有任务向 API 发出 get 请求。 我有大约 70 000 个请求需要处理,我想在 24 小时内将它们分发出去。因此,并非所有 70k 请求都在例如上午 10 点运行。

我将如何在 celery django 中做到这一点?我一直在寻找几个小时,但找不到一个好的简单解决方案。

数据库中有一个需要刷新的游戏列表。目前我有一个每小时创建任务的 cron。但是为每个游戏创建一个任务并让它每小时重复一次会更好吗?

【问题讨论】:

    标签: python python-3.x celery django-celery


    【解决方案1】:

    典型的方法是在您需要完成某些工作时发送它们,无论有多少(甚至数十万)。但是,执行由您订阅专用队列的工作人员(和工作进程)的数量控制。这里的关键是专用队列——这是一种不允许所有工作人员开始执行新创建任务的常用方法。这超出了 Celery 的基本用法。对于此用例,您需要使用 celery multi,或者使用不同的队列手动创建两个或多个单独的 Celery worker。

    如果您不想让事情变得过于复杂,您可以使用当前设置,但将这些任务设置为最低优先级,因此如果创建了任何新的、更重要的任务,它将首先执行。这种方法的问题是,据我所知,只有 Redis 和 RabbitMQ 后端支持优先级。

    【讨论】:

      猜你喜欢
      • 2020-12-26
      • 2019-11-08
      • 1970-01-01
      • 2011-06-19
      • 2012-09-06
      • 2018-10-01
      • 2013-12-16
      • 1970-01-01
      • 2013-03-06
      相关资源
      最近更新 更多