This commit is contained in:
37
resolvers/listener.py
Normal file
37
resolvers/listener.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import json
|
||||
from typing import List, Dict
|
||||
|
||||
from orm.notification import Notification
|
||||
from services.db import local_session
|
||||
from services.rediscache import redis
|
||||
|
||||
|
||||
def handle_reaction(notification: Dict[str, str | int | List[int]]):
|
||||
"""создаеёт новое хранимое уведомление"""
|
||||
try:
|
||||
with local_session() as session:
|
||||
n = Notification(**notification)
|
||||
session.add(n)
|
||||
session.commit(n)
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
print(f"[listener.handle_reaction] error: {str(e)}")
|
||||
|
||||
|
||||
def stop(pubsub):
|
||||
pubsub.unsubscribe()
|
||||
pubsub.close()
|
||||
|
||||
|
||||
def start():
|
||||
pubsub = redis.pubsub()
|
||||
pubsub.subscribe("reaction")
|
||||
try:
|
||||
# Бесконечный цикл прослушивания
|
||||
while True:
|
||||
msg = pubsub.get_message()
|
||||
handle_reaction(json.loads(msg["data"]))
|
||||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
stop(pubsub)
|
Reference in New Issue
Block a user