Я хочу использовать пул соединений aioredis, а не создавать новое соединение в каждом AsyncWebsocketConsumer.connect. Где можно разместить код - PullRequest
0 голосов
/ 15 мая 2019

Я хочу использовать пул соединений aioredis, а не создавать новое соединение в каждом AsyncWebsocketConsumer.connect. Куда я могу поместить код.

Теперь я каждый раз создаю новое соединение в событии соединения, код такой

async def connect(self):
    self.redis = await aioredis.create_redis(
            'redis://localhost',encoding='utf-8')
async def disconnect(self, close_code):
    await self.redis.close()

Мне нужно что-то вроде self.channel_layer, использующее подключение к пулу для каждого потребителя.Спасибо.

1 Ответ

0 голосов
/ 20 мая 2019

Возможно, не лучшее решение, но вы можете сделать это

Ваше приложение __init__.py

from asgiref.sync import async_to_sync

redis = async_to_sync(aioredis.create_redis)('redis://localhost',encoding='utf-8')

Тогда у вашего потребителя вы можете импортировать и использовать существующее соединение redis

from . import redis
...