【问题标题】:Redis publish - Wrong number of argument for 'set'Redis 发布 - 'set' 的参数数量错误
【发布时间】:2014-04-09 15:47:47
【问题描述】:

我正在尝试将 websockets 与 Django 一起用于我的应用程序的一小部分。

尝试first exampledjango-websocket-redis 广播消息

from ws4redis.publisher import RedisPublisher
redis_publisher = RedisPublisher(facility='foobar', broadcast=True)
redis_publisher.publish_message('Hello World')

我实际上正在将消息接收到订阅的客户端,但我收到了这个错误:

“set”命令的参数数量错误 [...] 异常位置 my_virtualenv/local/lib/python2.7/site-packages/redis/connection.py in read_response,第 344 行

(从publish_message() 电话追踪)

我的版本:

Django==1.6.2
django-websocket-redis==0.4.0
redis==2.9.1

有人可以帮我调试吗?

【问题讨论】:

    标签: python django websocket redis


    【解决方案1】:

    看起来这是一个错误。

    修复:

    ws4redis.redis_store.RedisStorepublish_message 中,更改

    self._connection.set(channel, message, ex=expire)
    

    self._connection.setex(channel, expire, message)
    

    redis SET 命令不接受第三个参数。我认为这意味着设置一个在几秒钟后过期的值,即 redis SETEX 命令。 py-redis 的setex 方法调用类似于setex(name, time, value)

    这解决了“'set' 的参数数量错误”错误。

    参考:https://github.com/jrief/django-websocket-redis/pull/30

    【讨论】:

      【解决方案2】:

      我终于将过期时间设置为 0 作为解决方法

      WS4REDIS_EXPIRE = 0
      

      这会阻止 ws4redis 在 redis 中存储任何内容。


      0.4.1 起已修复

      【讨论】:

        猜你喜欢
        • 2017-09-22
        • 1970-01-01
        • 2015-03-21
        • 1970-01-01
        • 1970-01-01
        • 2020-12-28
        • 2021-08-09
        • 2022-01-02
        • 2021-06-18
        相关资源
        最近更新 更多