===== Usage ===== To use Redis heartbeat lock in a project:: from redis_heartbeat_lock import async_context, context_manager # Initialize Redis client. redis = await async_context.AsyncLock.create( key="my_key", url="redis://127.0.0.1:6379", lock_acquisition_timeout=2.0, # default 8.0 lock_check_rate=0.2, # default 0.2 lock_expiry=8, # default 8 ) # Use the context manager to hold a lock while doing work, refreshing every `period` seconds async with context_manager.ContextManager(period=1.0, redis=redis) as _: try: # Do some stuff raise Exception("Something failed") except Exception as e: # Handle any errors. This includes logging, saving, raising the error up, etc. print(f"My task failed with {str(e)}) raise e