Redis发布 - 'set'的参数数量错误

时间:2014-04-09 15:47:47

标签: python django websocket redis

我试图在我的应用程序的一小部分中使用带有Django的websockets。

尝试first example广播django-websocket-redis

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

我实际上已将消息收到订阅的客户端,但我收到此错误:

  

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

(追溯到publish_message()电话)

我的版本:

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

有人可以帮我调试吗?

2 个答案:

答案 0 :(得分:1)

我最终将到期时间设置为0作为解决方法

WS4REDIS_EXPIRE = 0

这可以防止ws4redis以redis形式存储任何内容。


0.4.1

以来已修复

答案 1 :(得分:1)

看起来这是一个错误。

修正:

ws4redis.redis_store.RedisStore的{​​{1}}中

,更改

publish_message

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

redis self._connection.setex(channel, expire, message) 命令不带第三个参数。我认为的意思是设置一个在几秒钟后过期的值,即redis SET命令。 py-redis SETEX方法称为setex

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

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