【发布时间】:2020-08-13 10:21:16
【问题描述】:
我正在使用 Celery 为我的 Django 应用程序运行后台作业,该应用程序托管在 Heroku 上,并使用 Redis 作为代理。我想设置任务优先级。
我目前正在使用 Celery 默认队列和所有工作人员从中获取信息。我正在考虑实施优先级划分within the only queue,但它到处都被描述为一种不好的做法。 处理优先级问题的最佳方法的共识是set different Celery queues for each level of priority。比方说:
队列 1 用于最高优先级任务,分配给 x 个工作人员
Queue2 默认队列,分配给所有其他工作人员
我看到这种方法的第一个问题是,如果某个时间没有高优先级任务,我会降低 x 个工人的生产力。
另外,假设我的基础架构扩大了,我有更多可用的工人。只有“默认”工作人员的数量会动态扩展。此外,这种方法使我无法保留看起来没有针对可扩展性进行优化的相同 dynos(Heroku 上的容器)。
是否有一种有效的方法来处理任务优先级并同时保留可复制的工作人员?
【问题讨论】:
-
我想知道你从哪里读到使用优先级是不好的做法
标签: django heroku celery priority-queue