我想使用aioredis连接池,而不是在每个AsyncWebsocketConsumer.connect中创建新连接。我可以在哪里放置代码

时间:2019-05-15 02:42:59

标签: python django-channels

我想使用aioredis连接池,而不是在每个AsyncWebsocketConsumer.connect中创建新连接。我可以在哪里放置代码。

现在我每次都在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 :(得分:0)

可能不是最好的解决方案,但是您可以做到

您应用的__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