Coverage for microservice_websocket/app/utils/sync_cache.py: 26%
20 statements
« prev ^ index » next coverage.py v7.0.0, created at 2022-12-20 18:11 +0000
« prev ^ index » next coverage.py v7.0.0, created at 2022-12-20 18:11 +0000
1from datetime import datetime, timedelta
3from beanie import PydanticObjectId
5from ..config import config as Config
6from ..services.database import Reading
7from .external_archiviation import send_payload
10def add_to_cache(readingObjectID: str):
11 from .. import redis_client
13 redis_client.sadd("idCache", readingObjectID)
16async def sync_cached():
17 from .. import redis_client
19 ids: set[bytes] = redis_client.smembers("idCache")
21 # Loop set items
22 for reading_object_id in [x.decode() for x in ids]:
23 reading: Reading | None = await Reading.get(PydanticObjectId(reading_object_id))
24 if reading is None:
25 redis_client.srem("idCache", reading_object_id)
26 continue
28 publishedAt = reading.publishedAt
30 if datetime.now() - publishedAt > timedelta(
31 seconds=Config.app.READING_SYNC_WAIT
32 ):
33 await send_payload(reading)
34 redis_client.srem("idCache", reading_object_id)