Metadata-Version: 2.0
Name: dumblock
Version: 0.1
Summary: redis lock decorators for django
Home-page: https://github.com/Fak3/dumblock
Author: Roman Evstifeev
Author-email: someuniquename@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: OS Independent
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Android
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development
Classifier: Topic :: Utilities

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

Installation
------------

.. code:: bash

    pip install dumblock

Usage
-----

Set ``DUMBLOCK_REDIS_URL`` in your django settings:

.. code:: python

    DUMBLOCK_REDIS_URL = "redis://localhost:6379"

lock\_or\_exit
~~~~~~~~~~~~~~

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

Example:

.. code:: python

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

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

lock\_wait
~~~~~~~~~~

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

Example:

.. code:: python

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

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


