Skip to main content

This package provides decorators that will try to acquire lock before calling decorated function.

Installation

pip install lockorator

Usage

This package provides two flavours of lock decorators: redis and asyncio. Both flavours have the same api.

Package lockorator.asyncio provides asyncio lock decorators, also compatible with trio.

Package lockorator.redis provides redis lock decorators.

To use redis locks, set LOCKORATOR_REDIS_URL in your environment:

export LOCKORATOR_REDIS_URL="redis://localhost:6379"

API

lock_or_exit

Decorator. Before decorated function starts, try to acquire lock with specified identifier. If lock is acquired successfully, proceed executing the function. Otherwise, return immediately. The id argument can contain templated string, wich will be rendered with args and kwargs, passed to the function.

Example:

from lockorator.asyncio import lock_or_exit

@lock_or_exit('lock_work_{}')
def workwork(x):
    pass

workwork(3)  # Will try to acquire lock 'lock_work_3'

lock_wait

Decorator. Before decorated function starts, try to acquire lock with specified identifier, waiting for waittime seconds if needed. If lock is acquired successfully, proceed executing the function. Otherwise, raise lockorator.TimeoutError. The id argument can contain templated string, wich will be rendered with args and kwargs, passed to the function.

Example:

from lockorator.redis import lock_wait

@lock_wait('lock_work_{}', waittime=4)
def workwork(x):
    pass

workwork(3)  # Will try to acquire lock 'lock_work_3' for 4 seconds

Metadata

Release files for lockorator 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lockorator 0.1
File Size Uploaded
lockorator-0.1.tar.gz 3.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lockorator 0.1
File Interpreter ABI Platform
lockorator-0.1-py3-none-any.whl Python 3 none any Details

Total release size: 7.9 kB

Release files / lockorator-0.1.tar.gz

Download URL lockorator-0.1.tar.gz
Size 3.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c5beda474335f8f892ca1b775cc9e421668e2e9eb512ab65d25c8f586a35b9c2
BLAKE2b-256 checksum
How to use checksums
2e82f75e59aa950b5344e9d7710e90287755862700d94180ab6faea6d05db5b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

Release files / lockorator-0.1-py3-none-any.whl

Download URL lockorator-0.1-py3-none-any.whl
Size 4.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6a6c29f15957e3d6225d732fda807f2818476e99f7821e2776128e0d15a8c235
BLAKE2b-256 checksum
How to use checksums
16f4e00961a2ffc6a9c9f663b5a6b29f51caeb91477ab5bdc4a8adcbb8a644e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

Release history Release notifications | RSS feed

This release

0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page