chat/apps/chat/events/publishers/longpoll.py

23 lines
664 B
Python

import json
from django_redis import get_redis_connection
from apps.chat.events.event import MessageSentEvent
_KEY_TTL = 300
class LongPollPublisher:
def publish(self, event: MessageSentEvent) -> None:
redis = get_redis_connection("default")
key = f"chat_events:{event.chat_id}"
payload = json.dumps(
{
"post_id": event.post_id,
"sender_id": str(event.sender_id),
"message_type": event.message_type,
**{k: v for k, v in event.payload.items() if v is not None},
}
)
redis.rpush(key, payload)
redis.expire(key, _KEY_TTL)