from app.adapters.redis import redis_client from app.config import settings def acquire(batch_id: int) -> bool: """Atomic acquire, so a retried tick can never invoke the sender twice for the same batch.""" return bool( redis_client.set( settings.redis_sender_lock_key.format(batch_id=batch_id), "1", nx=True, ex=settings.redis_sender_lock_ttl_seconds, ) ) def release(batch_id: int) -> None: redis_client.delete(settings.redis_sender_lock_key.format(batch_id=batch_id))