Skip to main content

lock decorators

Project description

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

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lockorator-0.1.tar.gz (3.0 kB view details)

Uploaded Source

Built Distribution

lockorator-0.1-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file lockorator-0.1.tar.gz.

File metadata

  • Download URL: lockorator-0.1.tar.gz
  • Upload date:
  • Size: 3.0 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for lockorator-0.1.tar.gz
Algorithm Hash digest
SHA256 c5beda474335f8f892ca1b775cc9e421668e2e9eb512ab65d25c8f586a35b9c2
MD5 929b1e62066758af8bc912d3cfef21bd
BLAKE2b-256 2e82f75e59aa950b5344e9d7710e90287755862700d94180ab6faea6d05db5b1

See more details on using hashes here.

File details

Details for the file lockorator-0.1-py3-none-any.whl.

File metadata

  • Download URL: lockorator-0.1-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for lockorator-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6a6c29f15957e3d6225d732fda807f2818476e99f7821e2776128e0d15a8c235
MD5 73557ebd373801f6381d09ba2cded386
BLAKE2b-256 16f4e00961a2ffc6a9c9f663b5a6b29f51caeb91477ab5bdc4a8adcbb8a644e4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page