Не удается установить соединение с Heroku Redis с помощью Django channels_redis
Я использую Django Channels в своем приложении, чтобы сделать функцию чата между людьми. Для этого я использую слои каналов Django Channels, которые используют 'Redis' в качестве резервного хранилища.
У меня следующая конфигурация в settings.py:
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": [os.environ.get('REDIS_URL', ("localhost", 6379))],
},
},
}
CHANNEL_LAYERS работает нормально для разработки, когда 'hosts' указывает на localhost. Однако в продакшене, когда я пытаюсь убедиться, что канальный слой может взаимодействовать с Redis на Heroku, он не работает. Использование кода, приведенного в Channels Docs, как показано ниже, приводит к следующей ошибке
import channels.layers
>>> channel_layer = channels.layers.get_channel_layer()
>>> from asgiref.sync import async_to_sync
>>> async_to_sync(channel_layer.send)('test_channel', {'type': 'hello'})
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/app/.heroku/python/lib/python3.7/site-packages/asgiref/sync.py", line 223, in __call__
return call_result.result()
File "/app/.heroku/python/lib/python3.7/concurrent/futures/_base.py", line 428, in result
return self.__get_result()
File "/app/.heroku/python/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/app/.heroku/python/lib/python3.7/site-packages/asgiref/sync.py", line 292, in main_wrap
result = await self.awaitable(*args, **kwargs)
File "/app/.heroku/python/lib/python3.7/site-packages/channels_redis/core.py", line 299, in send
async with self.connection(index) as connection:
File "/app/.heroku/python/lib/python3.7/site-packages/channels_redis/core.py", line 835, in __aenter__
self.conn = await self.pool.pop()
File "/app/.heroku/python/lib/python3.7/site-packages/channels_redis/core.py", line 73, in pop
conns.append(await aioredis.create_redis(**self.host, loop=loop))
File "/app/.heroku/python/lib/python3.7/site-packages/aioredis/commands/__init__.py", line 175, in create_redis
loop=loop)
File "/app/.heroku/python/lib/python3.7/site-packages/aioredis/connection.py", line 133, in create_connection
await conn.auth(password)
File "/app/.heroku/python/lib/python3.7/site-packages/aioredis/util.py", line 52, in wait_ok
res = await fut
File "/app/.heroku/python/lib/python3.7/site-packages/aioredis/connection.py", line 186, in _read_data
obj = await self._reader.readobj()
File "/app/.heroku/python/lib/python3.7/site-packages/aioredis/stream.py", line 102, in readobj
await self._wait_for_data('readobj')
File "/app/.heroku/python/lib/python3.7/asyncio/streams.py", line 473, in _wait_for_data
await self._waiter
File "/app/.heroku/python/lib/python3.7/asyncio/selector_events.py", line 814, in _read_ready__data_received
data = self._sock.recv(self.max_size)
ConnectionResetError: [Errno 104] Connection reset by peer
Просьба о срочной помощи, пожалуйста!!!