skip to Main Content

I am facing the following error message on my Django application:

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'

This seems to be after a WebSocket connection is created with the WebSocket disconnecting after the error is thrown.

At first I looked at other similar issues that were caused by using a version of Redis lower than 5.0 but after entering the command redis-cli INFO | grep version I can see the version of Redis installed on my machine is 6.0.9 which also applies when calling a similar function from within Python.

At this point I think the issue could be due to an independent version of Redis running (perhaps from some other dependency?) but I cannot find evidence of this on my machine, or due to upgrading the version of channels from 1 to 3 and leaving behind some legacy code. I have not been successful in finding any similar issues to the one I am facing and not sure if either of these hypothesises are correct.

2

Answers


  1. Chosen as BEST ANSWER

    To answer this issue I faced, I'm not 100% sure what was broken, but I am using a conda environment with a mixture of packages installed via conda and pip (with pip also appearing to be broken). After removing and recreating the environment, and installing all packages with pip, this issue had been solved.


  2. i had the same error and fixed it by updating aioredis.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search