芹菜加权任务

问题描述 投票:0回答:1

我想知道是否可以为芹菜任务添加“权重”。这是一个具体的例子: 我有一个带有 8Gb VRAM 的 GPU。 我有三项任务:

  • task1 占用 2Gb
  • task2 占用 4Gb
  • task3 占用 8Gb

我启动了一个具有 4 个并发的 celery Worker。

我启动了 5 个任务 1、2 个任务 2 和一个任务 3。

首先,我有[任务1,任务1,任务1,任务1]。然后,当这个任务结束时,我有[task1,task2]和[task2,task2]。终于,当大家都完成后,任务3来了。

可以做这样的事情吗? task3 占用 4 个插槽,task2 占用 2 个插槽?

python concurrency celery
1个回答
0
投票

Celery 不会为您进行此管理,但您可以通过使用共享内存和锁来创建自己的“租赁”。如果您使用的是多处理工作模型,请查看多处理文档,它为您提供了足够的原始工具来自行管理。您可以使用线程或 greenlet 执行相同的操作,但使用不同的并发原语。

几点提示:

  • CELERYD_PREFETCH_MULTIPLIER
    设置为
    1
    以改善分布。
  • 如果某个任务因资源不足而无法完成,则使用重试机制(给其他可能适合运行的任务提供机会)。
  • 当服务出错或非正常退出时,不要忘记归还租用的资源。
© www.soinside.com 2019 - 2024. All rights reserved.