Metadata-Version: 1.1
Name: celery-mutex
Version: 0.1.0
Summary: Mutex for Celery tasks, which can be refined.
Home-page: https://github.com/brolewis/celery_mutex
Author: Lewis Franklin
Author-email: lewis.franklin@gmail.com
License: BSD License
Description: Celey Mutex
        ===========
        
        Celery Mutex is a mutex for Celery Tasks, optionally refined based on provided
        keys. This mutex prevents execution of concurrent tasks, as opposed to delaying
        execution.
        
        
        Installation
        ------------
        
        Simply run `pip install celery_mutex`
        
        
        Requirements
        ------------
        
        Celery Mutex relies on [ZooKeeper](http://zookeeper.apache.org/).
        
        
        Usage
        -----
        
        Celery Mutex takes advantage of Abstract Tasks for Celery. To utilize this
        abstract task, add it as a base for the task:
        
            import celery_mutex
        
            @app.task(base=celery_mutex.MutexTask)
            def my_task(a, b):
                return a + b
        
        A new configuration variable is required in order to let Celery Mutex know
        about your ZooKeeper servers:
        
            ZOOKEEPER_HOSTS = 'localhost:2181'
        
        This is a comma-separated list of hosts to connect to.
        
        By default a mutex times out after one hour. This can be changed globally by
        setting `MUTEX_TIMEOUT` or per-task by setting `mutex_timeout` on the task. For
        both the value is an integer for the number of seconds to set the time out.
        
        A second configuration option allows you to refine the mutex for a given task.
        By default, Celery Mutex only allows one instance of a task at a time. However,
        there may be a need to further refine what is controlled by the mutex. This can
        be done by setting `mutex_keys` on the task. The value is a list of keys that
        are to be used for determining exclusivity.
        
        Using our above example, adding the two optional parameters would yield:
        
            import celery_mutex
        
            @app.task(base=celery_mutex.MutexTask, mutex_timeout=30, mutex_keys=('a',))
            def my_task(a, b):
                return a + b
        
        This would cause the mutex to only prevent execution for tasks that share the
        same value for "a".
        
Keywords: Celery tasks mutex
Platform: any
Classifier: License :: OSI Approved :: BSD License
Classifier: Intended Audience :: Developers
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Distributed Computing
