You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向django-RQ添加第二个队列时出现Redis连接错误该如何解决

问题排查与解决方案

你的配置本身语法和参数逻辑没有问题,多个队列完全可以共享同一个Redis实例的连接信息,不存在冲突。该报错可按以下优先级排查解决:

  • 队列调用方式错误
    不要直接使用rq原生的Queue()类获取pro队列,必须使用django-rq封装的方法读取配置:
    import django_rq
    # 获取pro队列实例
    pro_queue = django_rq.get_queue('pro')
    # 提交任务
    pro_queue.enqueue(你的任务函数, 参数1, 参数2)
    
    原生rq的调用方法不会读取Django settings中的RQ_QUEUES配置,会直接报找不到Redis连接的错误,这是最常见的触发原因。
  • 旧版本django-rq兼容问题
    如果你使用的是2.0版本以下的django-rq,部分旧版本要求在自定义队列配置中额外显式声明'USE_REDIS_CACHE': False才能正常识别连接配置,可修改队列配置如下:
    if(on_heroku): 
        RQ_QUEUES = {
            'default': {
                'URL': os.getenv('REDISTOGO_URL', 'redis://localhost:6379/0'),
                'DEFAULT_TIMEOUT': 500,
                'USE_REDIS_CACHE': False
            },
            'pro': {
                'URL': os.getenv('REDISTOGO_URL', 'redis://localhost:6379/0'),
                'DEFAULT_TIMEOUT': 500,
                'USE_REDIS_CACHE': False
            }
        }
    else:
        RQ_QUEUES = {
            'default': {
                'HOST': 'localhost',
                'PORT': 6379,
                'DB': 0,
                'DEFAULT_TIMEOUT': 500,
                'USE_REDIS_CACHE': False
            },
             'pro': {
                'HOST': 'localhost',
                'PORT': 6379,
                'DB': 0,
                'DEFAULT_TIMEOUT': 500,
                'USE_REDIS_CACHE': False
            }
        }
    
  • 补充验证worker启动参数
    本地测试时启动worker的命令为python manage.py rqworker default pro,Heroku的Procfile中worker配置需写为worker: python manage.py rqworker default pro,确保pro队列有对应的worker承接任务。

内容的提问来源于stack exchange,提问作者JeremyE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 04:57:01