我有以下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 库有点困惑,我不知道我的代码是否有意义或者我做错了什么
这里的 Redis 是同步的,这意味着它会阻止代码的执行,直到完成操作。
您可以使用aioredis。 或asyncio-redis