Files

34 lines
969 B
Python

"""redis_client.py — Очередь загрузок через Redis."""
import os, json, redis
UPLOAD_QUEUE = "contracts:upload_queue"
_r = None
def _get():
global _r
if _r is None:
_r = redis.Redis(
host=os.getenv("REDIS_HOST", "redisk8s.f6303a9d-4ab1-4b2f-8aa8-08f933d02f82.svc.cluster.local"),
port=int(os.getenv("REDIS_PORT", "6379")),
password=os.getenv("REDIS_PASS", "aLITloRefJEiCPqUc2xB"),
decode_responses=True,
socket_connect_timeout=5,
socket_timeout=10,
)
return _r
def push(task: dict):
"""Добавить задание в очередь."""
_get().rpush(UPLOAD_QUEUE, json.dumps(task, ensure_ascii=False))
def pop(timeout=5):
"""Взять задание из очереди (блокирующий)."""
result = _get().blpop(UPLOAD_QUEUE, timeout=timeout)
if result:
return json.loads(result[1])
return None