如何有效利用芹菜在1秒内执行多项任务?

时间:2019-02-10 21:57:06

标签: python django celery digital-ocean celerybeat

我正在使用托管在“ DigitalOcean”服务器上的Web应用程序:

  • 4GB RAM
  • 2个vCPU
  • 25GB固态硬盘

我有20多个任务。每个任务需要0.2到1秒。我希望所有这20多个任务都可以并行执行,即它们都必须在1秒内完成执行。

我正在用芹菜每1秒(24/7)定期执行这些任务。设计该应用程序的目的是,如果某个任务在距其先前执行未超过1秒的时间内未执行,则该任务将被删除。 (另一个任务task_remover会定期检查并删除任务。)

我正在使用eventlet和2个工作人员使用-c 20

因此,我从1秒内每秒执行20多个任务开始。这运行了一段时间。但是几个小时后,所有任务都被删除(不是一次删除)。

因此,我对上述服务器配置的疑问是:

  • 这些任务实际上并行执行吗?
  • 0.2 * 20个任务= 4.0秒/ 2个vCPU = 2.0秒以完成所有任务?纠正我吗?
  • 我应该继续使用eventlet还是使用prefork
  • 我应该寻求并行性还是并发性?怎么样?
  • 如果您建议并行处理:我应该运行多少个工人?如果我使用--concurrency 20可以吗?还是我应该选择--concurrency 2,vCPU的数量为2?
  • 如果您建议并发:我应该运行多少个工人? --concurrency ??
  • 您会推荐什么配置?多少个vCPU和多少RAM?

目标:我需要这20多个运行24/7的任务,并且不应该给task_remover(如上所述)删除这些任务的机会。

0 个答案:

没有答案