23 lines
671 B
Python
23 lines
671 B
Python
from app.dependencies.database import get_redis
|
|
from app.log import logger
|
|
from app.service.user_cache_service import get_user_cache_service
|
|
|
|
from .base import RedisSubscriber
|
|
|
|
KEY = "user:online_status"
|
|
|
|
|
|
class UserOnlineSubscriber(RedisSubscriber):
|
|
async def start_subscribe(self):
|
|
await self.subscribe(KEY)
|
|
self.add_handler(KEY, self.on)
|
|
self.start()
|
|
|
|
async def on(self, c: str, s: str): # noqa: ARG002
|
|
user_id = int(s)
|
|
logger.info(f"Received user online status update for user_id: {s}")
|
|
await get_user_cache_service(get_redis()).invalidate_user_cache(user_id)
|
|
|
|
|
|
user_online_subscriber = UserOnlineSubscriber()
|