django - 芹菜工人最佳实践
问题描述
我正在使用 Celery 为我的 Django 应用程序运行后台作业,该应用程序托管在 Heroku 上,Redis 作为代理。我想设置任务优先级。
我目前正在使用 Celery 默认队列和所有工作人员提供的信息。我正在考虑在唯一的队列中实现优先级,但它到处都被描述为一种不好的做法。处理优先级问题的最佳方法的共识是为每个优先级设置不同的 Celery 队列。比方说:
队列 1 用于最高优先级任务,分配给 x 个工作人员
Queue2 默认队列,分配给所有其他工作人员
我用这种方法看到的第一个问题是,如果某个时候没有高优先级任务,我会失去 x 工人的生产力。
另外,假设我的基础设施扩大了,我有更多的工人可用。只有“默认”工作人员的数量会动态扩展。此外,这种方法使我无法保持相同的 dynos(Heroku 上的容器),这看起来并没有针对可扩展性进行优化。
是否有一种有效的方法来处理任务优先级并同时保留可复制的工作人员?
解决方案
推荐阅读
- php - IntlDateFormatter 不返回特定的非位置时区格式 (z)
- python - 有没有办法可以加快这段代码的速度,或者这是最快的?
- c - Function that returns 1D array and writes the results to a text file
- java - How to access file in documents folder?
- git - Jenkins 错误:克隆远程 repo 'origin' 时出错
- python-3.x - 在 Jupyter Notebook 单元的输出上运行测试
- c++ - &array[0]==(void*)&array 是否保证为真?
- amazon-web-services - 将请求从 example.com:8000(旧 REST API)转发到 AWS 上的 api.example.com(新 REST API)
- node.js - socket.broadcast.emit 无法正确触发
- angular - Firebase Firestore 在文档删除失败时返回 true