python - 自定义 celery 的速率限制和每个组的工人数量
问题描述
我有一个简单的 python celery 任务:
@app.task
def simple_task(key, i):
print('start', key, i)
time.sleep(random.uniform(0.5, 1.5))
print('finish', key, i)
...
def call_simple_tasks():
for key in ['key1', 'key2', 'key3']:
for i in range(10):
simple_task.apply_async(args=[key, i])
是否可以在两个条件下自定义 celery 队列(使用 routing_key 或其他):
只能同时执行 X 个具有相同 key 的任务(每组具有相同 key 的任务)
任务速率限制必须为每个键 2/s(对于具有相同键的每个组,任务的启动频率不能超过每秒 2 个任务)
我找到rate_limit
了任务的属性,但它不允许每个键的限制。
解决方案
推荐阅读
- javascript - 如何在我调用 api 路由的地方部署下一个应用程序
- python - 如何在 Pandas 中将日期列和相关列一起取消嵌套?
- python - 注释仅返回指定的分组值 - Django
- elixir - Elixir 返回值
- swiftui - SwiftUI NavigationItem 动态数据发送不正确的参数
- javascript - 如何在浏览器中使用 twitter-text
- docker - Docker - Symfony5/Mercure:无法到达 Mercure 集线器
- racket - raco pkg install jsonic 似乎没有安装 scribble docs
- c - 我们是否总是必须为函数中的变量分配初始值?
- gnome - 在 Gnome Desktop 中每台计算机显示器的顶部显示分类横幅