Python中的redis是异步的吗?

问题描述 投票:0回答:1

我有以下Python代码:

import redis

from app.infra.services.notifications import INotifier
from app.schemas.notification import NotificationMessage
from app.config import settings


REDIS_CLIENT_PUBSUB = redis.StrictRedis(
    host=settings.REDIS_HOST,
    port=settings.REDIS_PORT,
    password=settings.REDIS_PASSWORD,
)

class RedisNotifier(INotifier):
    def __init__(self):
        self.redis_client = REDIS_CLIENT_PUBSUB

    async def send_notification(self, room: str, notification: NotificationMessage) -> None:
        await self.redis_client.publish(room, notification.json())


redis_notifier = RedisNotifier()

我有一个用 FastAPI 编写的 Web 应用程序,它将使用 redis_notifier 将消息发布到频道。我的问题是是否真的: self.redis_client.publish(房间, notification.json()) 它是异步的,也就是说,我的Web应用程序将能够在发布完成时放弃这个协程并做其他事情? 我对 redis 和 aioredis 库有点困惑,我不知道我的代码是否有意义或者我做错了什么

python async-await redis
1个回答
0
投票

这里的 Redis 是同步的,这意味着它会阻止代码的执行,直到完成操作。

您可以使用aioredis。 或asyncio-redis

https://aioredis.readthedocs.io/en/latest/

https://pypi.org/project/asyncio-redis/

© www.soinside.com 2019 - 2024. All rights reserved.