首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致错误AttributeError的Channels_redis:'Redis‘对象没有属性'bzpopmin’

导致错误AttributeError的Channels_redis:'Redis‘对象没有属性'bzpopmin’
EN

Stack Overflow用户
提问于 2021-01-04 22:54:58
回答 2查看 890关注 0票数 0

我在我的Django应用程序中遇到了以下错误消息:

代码语言:javascript
复制
Exception inside application: 'Redis' object has no attribute 'bzpopmin'
Traceback (most recent call last):
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels/staticfiles.py", line 44, in __call__
    return await self.application(scope, receive, send)
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels/routing.py", line 71, in __call__
    return await application(scope, receive, send)
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels/sessions.py", line 47, in __call__
    return await self.inner(dict(scope, cookies=cookies), receive, send)
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels/sessions.py", line 254, in __call__
    return await self.inner(wrapper.scope, receive, wrapper.send)
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels/auth.py", line 181, in __call__
    return await super().__call__(scope, receive, send)
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels/middleware.py", line 26, in __call__
    return await self.inner(scope, receive, send)
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels/routing.py", line 160, in __call__
    send,
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels/consumer.py", line 94, in app
    return await consumer(scope, receive, send)
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels/consumer.py", line 59, in __call__
    [receive, self.channel_receive], self.dispatch
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels/utils.py", line 58, in await_many_dispatch
    await task
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels/utils.py", line 50, in await_many_dispatch
    result = task.result()
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels_redis/core.py", line 469, in receive
    real_channel
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels_redis/core.py", line 524, in receive_single
    index, channel_key, timeout=self.brpop_timeout
  File "/home/jack/.conda/envs/GuessWhich/lib/python3.7/site-packages/channels_redis/core.py", line 361, in _brpop_with_clean
    result = await connection.bzpopmin(channel, timeout=timeout)
AttributeError: 'Redis' object has no attribute 'bzpopmin'

这似乎是在抛出错误后,在WebSocket断开连接的情况下创建了WebSocket连接。

首先,我查看了由于使用低于5.0的Redis版本而导致的其他类似问题,但在输入命令redis-cli INFO | grep version后,我可以看到安装在我机器上的Redis版本是6.0.9,这也适用于从Python中调用类似函数的情况。

在这一点上,我认为这个问题可能是由于Redis的一个独立版本在运行(可能是由于其他一些依赖项?)但我在我的机器上找不到这方面的证据,或者是因为将频道的版本从1升级到3并留下了一些遗留代码。我没有成功地找到任何与我面临的问题类似的问题,也不确定这些假设是否正确。

EN

回答 2

Stack Overflow用户

发布于 2021-01-09 02:56:53

为了回答我遇到的这个问题,我不能100%确定是什么损坏了,但我使用的是conda环境,其中混合了通过conda和pip安装的包(其中pip似乎也损坏了)。在删除并重新创建环境,并使用pip安装所有包之后,这个问题就解决了。

票数 0
EN

Stack Overflow用户

发布于 2021-03-08 21:22:00

我遇到了同样的错误,并通过更新aioredis修复了它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65564769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档