0

我正在使用 Celery 和 Django 来管理任务队列,并使用一个(或多个)小型(单核)EC2 实例来处理任务。

我有一些考虑。

  • 我的任务在单核上占用了 100% 的 CPU。- 使用任何可用的 CPU,但仅在一个内核中
  • 如果 2 个任务在同一个核心上进行,每个任务将减慢一半。
  • 我想尽快开始每项任务,不要让它成为问题。

现在说我有 4 个 EC2 实例,我用 "-c 5" 开始 celery。即每个实例 5 个并发任务。

在这个设置中,如果我有 4 个新任务,我想确保它们每个都去不同的实例,而不是 4 个去同一个实例并且每个任务都在争夺 CPU。

同样,如果我有 8 个任务,我希望每个实例一次获得 2 个任务,而不是 2 个实例每个处理 4 个任务。

芹菜是否已经像我描述的那样表现了?如果不是,那么我怎样才能让它表现得如此呢?

4

1 回答 1

2

实际上很简单:每个 ec2-instance 启动一个 celery-instance。将并发设置为每个 ec2 实例的核心数。

现在任务不会干扰并在您的实例之间很好地分配。

(以上假设您的任务受 CPU 限制)

于 2011-12-12T19:36:00.113 回答