zoukankan      html  css  js  c++  java
  • django_rq无法监听两个队列问题

      django_rq是为django集成redis队列,这个用的少,一般会选择celery,没办法项目中用到了。用起来很简单,配置可以参考官方文档:https://pypi.org/project/django-rq/

      settings.py 只需要配置如下:

      

    INSTALLED_APPS =(
    #other apps 
    “django_rq”,
    )
    
    
    RQ_QUEUES = {
    'default': {
    'HOST': 'localhost',
    'PORT': 6379,
    'DB': 0,
    'PASSWORD': 'some-password',
    'DEFAULT_TIMEOUT': 360,
    },
    'with-sentinel': {
    'SENTINELS': [('localhost', 26736), ('localhost', 26737)],
    'MASTER_NAME': 'redismaster',
    'DB': 0,
    'PASSWORD': 'secret',
    'SOCKET_TIMEOUT': None,
    },
    'high': {
    'URL': os.getenv('REDISTOGO_URL', 'redis://localhost:6379/0'), # If you're on Heroku
    'DEFAULT_TIMEOUT': 500,
    },
    'low': {
    'HOST': 'localhost',
    'PORT': 6379,
    'DB': 0,
    }
    }
    
    RQ_EXCEPTION_HANDLERS = ['path.to.my.handler'] # If you need custom exception handlers

      遇到的问题1【keyerror:default】:线上的队列配置如下:

    RQ_QUEUES = {
        '{q}high': {
            'HOST': '127.0.0.1',
            'PORT': 6379,
            'DB': 0,
            'DEFAULT_TIMEOUT': 360,
            'SOCKET_KEEPALIVE': True,
        },
        '{q}default': {
            'HOST': '127.0.0.1',
            'PORT': 6379,
            'DB': 0,
            'DEFAULT_TIMEOUT': 360,
            'SOCKET_KEEPALIVE': True,
        },
    }

      {q}无法识别,于是删掉{q},项目就可以启动起来(后面版本降级后队列启动跟名无关,带{q}也可以)。

      遇到的问题2【进入high队列的job只能入队,无法出队列】,在排查日志的时候发现:

    # 线上日志如下:
    2016-11-02 11:44:08,883 *** Listening on {q}high, {q}default...
    2016-11-02 11:44:08,883 Sent heartbeat to prevent worker timeout. Next one should arrive within 420 seconds.
    
    # 自己的日志为:
    2016-11-02 11:44:08,883 *** Listening on default...

      并没有去监听high队列,于是有部分任务无法去执行。

      最后,代码各个配置都对了一遍,上git找到django_rq源码,依赖包的版本也很重要,果不其然,线上是直接git安装的一个未发布的版本0.9.2.1,我是安装最新版本0.9.3,可以发现django_rq更新竟然不是向前兼容的,无耐^~^,我只好降级为django_rq==0.9.2,日志监听变为两个队列,一切正常了。

    实践出真知~
  • 相关阅读:
    hdu 1863 畅通工程
    poj 2524 Ubiquitous Religions
    04 Linux终端命令01
    05 linux中yum源报错
    Filterg过滤器和Listener监听器
    03 Centos的文件目录、远程连接工具及快照操作
    02 安装虚拟机以及设置虚拟机网卡信息
    01VM虚拟机介绍及配置虚拟机网卡信息
    Jstl表达式
    EL表达式
  • 原文地址:https://www.cnblogs.com/NolaLi/p/9816521.html
Copyright © 2011-2022 走看看