Skip to main content

prefect_redis.lease_storage

Classes

ConcurrencyLeaseStorage

A Redis-based concurrency lease storage implementation. Methods:

create_lease

create_lease(self, resource_ids: list[UUID], ttl: timedelta, metadata: ConcurrencyLimitLeaseMetadata | None = None) -> ResourceLease[ConcurrencyLimitLeaseMetadata]

list_holders_for_limit

list_holders_for_limit(self, limit_id: UUID) -> list[tuple[UUID, ConcurrencyLeaseHolder]]

read_active_lease_ids

read_active_lease_ids(self, limit: int = 100, offset: int = 0) -> list[UUID]

read_expired_lease_ids

read_expired_lease_ids(self, limit: int = 100) -> list[UUID]

read_lease

read_lease(self, lease_id: UUID) -> ResourceLease[ConcurrencyLimitLeaseMetadata] | None

renew_lease

renew_lease(self, lease_id: UUID, ttl: timedelta) -> bool
Atomically renew a concurrency lease by updating its expiration. Uses a Lua script to atomically check if the lease exists, update its expiration in the lease data, and update the index - all in a single atomic operation, preventing race conditions from creating orphaned index entries. Args:
  • lease_id: The ID of the lease to renew
  • ttl: The new time-to-live duration
Returns:
  • True if the lease was renewed, False if it didn’t exist

revoke_lease

revoke_lease(self, lease_id: UUID) -> None