django - 为了在docker中运行celery队列,我想指定多个具有不同并发度的队列

标签 django docker concurrency queue celery

目前我正在使用docker compose,其中我已将celery指定为服务,其中q1、q2、q3、q4和q5是一些不同的队列,我想要为每个队列分配不同的并发性。

  celery:
    restart: always
    build: 
      context: 
      dockerfile: Dockerfile
    container_name: celery
    command: celery --app=celery:app worker --concurrency=8 --loglevel=DEBUG -Q q1,q2,q3,q4,q5
    depends_on:
      - redis
      - web 

我在某处读到过有关 celery multi 的内容,但不知道它是否适合我的用例。

最佳答案

Multi 确实适合您的用例。

celery multi start \
      q1w q2w q3w 
      -c:q1w 2 -c:q2w,q3w 4 
      -Q:q1w q1 -Q:q2w q2 -Q:q3w q3
  • q1w -> q1 worker(我们可以启动命名节点,q1w 是名称)。

  • 我们可以为每个节点定义队列(-Q)和并发(-c)选项 或多个节点(逗号分隔)。

您可以使用其他选项扩展此功能。

请参阅此链接了解更多详细信息 https://docs.celeryq.dev/en/stable/reference/celery.bin.multi.html

PS:您可以执行celery multi show ...,它会给您它将运行的工作命令。

关于django - 为了在docker中运行celery队列,我想指定多个具有不同并发度的队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74441677/

相关文章:

python - Django - 使用从类似 REST 的 API 检索的数据构建报告的应用程序

linux - "python: can' t 打开文件 'manage.py' : [Errno 2] No such file or directory"when running tmux shell script?

python - 如何从另一个 python 脚本启动 Django 应用程序

php - 如何在 docker 上运行 PHP 脚本?

java - Java 中是否有在方法级别同步访问对象的设计模式或最佳实践?

django - 我的 Django 许多字段都标记为唯一,是否有选项可以删除它?

java - 提供 tomcat-users.xml 时,Tomcat 镜像不会在 Docker 上启动

bash - Lando:环境变量导致exec错误

c# - 在 C# 中并发写入一个对象

java - 从 ConcurrentMap.remove() 获取键是否存在