{ "info": { "author": "Lukasz Biedrycki", "author_email": "lukasz.biedrycki@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Other Environment", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "dipc\n=====================\n\nDistributed Inter-Process Communication Library implemented in Python and Memcached_. server\n\n.. _Memcached: http://memcached.org\n\nUsing dipc\n==========\n\ndipc library has two classes for distributed lock and semaphore, MemcacheLock\nand MemcacheSemaphore\n\nBoth of those clases has a first argument which is a list of memcached servers,\nname of lock/semaphore, ttl - timeout (in seconds). MemcacheSemaphore class has additional\nparameter value - which is number of processes that can access critical\nsection.\n\nacquire() method will wait forever until lock will be granted. You can specify \nargument blocking=False, and then will this methid will return True/False \ndepending on if lock was granted or not.\n\n >>> from dipc import MemcacheLock\n ... ml = MemcacheLock([\"localhost:11211\"], \"lock\", ttl=60)\n ... ml.acquire()\n ... # critical section\n ... ml.release()\n\n\n >>> from dipc import MemcacheSemaphore\n ... ml = MemcacheSemaphore([\"localhost:11211\"], \"semaphore\", value=10, ttl=60)\n ... ml.acquire()\n ... # critical section\n ... ml.release()\n\n\nThere are also decorators available: distributed_lock and distributed_semaphore\nFirst argument is a list of hosts, but it also can be a function that returns\nlist of hosts (for those environments that have config file read in a lazy\nmanner)\n\n >>> from dipc.decorators import distributed_lock\n ... \n ... @distributed_lock([\"localhost:11211\"], \"lock\", ttl=60)\n ... def foo():\n ... # body\n\n\n >>> from dipc.decorators import distributed_semaphore\n ... \n ... @distributed_semaphore([\"localhost:11211\"], \"semaphore\", value=10, ttl=60)\n ... def bar():\n ... # body", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/loucash/dipc", "keywords": "distributed ipc python memcache lock semaphore inter process communication", "license": "New BSD License", "maintainer": null, "maintainer_email": null, "name": "dipc", "package_url": "https://pypi.org/project/dipc/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/dipc/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/loucash/dipc" }, "release_url": "https://pypi.org/project/dipc/0.4/", "requires_dist": null, "requires_python": null, "summary": "Distributed Inter-Process Communication Library implemented in Python and Memcache server", "version": "0.4" }, "last_serial": 788973, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "c18284fb793a012585f2fc16bf19e834", "sha256": "e2e559e995901b167eb14bea0a9c19a29172638fa3052176d9f75a9cc95b00a9" }, "downloads": -1, "filename": "dipc-0.1.tar.gz", "has_sig": false, "md5_digest": "c18284fb793a012585f2fc16bf19e834", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2743, "upload_time": "2013-04-04T16:31:22", "url": "https://files.pythonhosted.org/packages/d9/c9/7b721d6b888510ded693f5897cfdf7f256a838e84a2f0540231411c3ed66/dipc-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "5c91e41202bb1fd4f2831d7de4daa585", "sha256": "721d48f18cafb4927c5b932514b05f8c7bff9d05cecb6ff75bea01fbc45ecb88" }, "downloads": -1, "filename": "dipc-0.2.tar.gz", "has_sig": false, "md5_digest": "5c91e41202bb1fd4f2831d7de4daa585", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3196, "upload_time": "2013-04-04T18:32:56", "url": "https://files.pythonhosted.org/packages/1a/09/4e319b5ab7296404a7de13752f14082e7a93f970722258fdbb6ffc5cd53d/dipc-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "923fdca55dc0f82289bec4de91c2c18c", "sha256": "ef0094fdf012cbc4deabc758304f124136b09094c6a3afbf7cb1b19dea63d254" }, "downloads": -1, "filename": "dipc-0.3.tar.gz", "has_sig": false, "md5_digest": "923fdca55dc0f82289bec4de91c2c18c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3188, "upload_time": "2013-04-04T18:34:26", "url": "https://files.pythonhosted.org/packages/29/32/72a2fc7af63615fc7ae4b201792416a44bce52a1f1e940d2f367fe3b18c0/dipc-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "653f95cca5d8219e127a9afa86d539ed", "sha256": "0c19a7f3ad99bc33ab1f3496496dadf0859bf32d067b8085311122b8a5702c93" }, "downloads": -1, "filename": "dipc-0.4.tar.gz", "has_sig": false, "md5_digest": "653f95cca5d8219e127a9afa86d539ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3587, "upload_time": "2013-04-05T15:19:04", "url": "https://files.pythonhosted.org/packages/cb/88/0cc5777d999dd488cec78fce65bc4bfc768bea92b9d6e6cefd687d152213/dipc-0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "653f95cca5d8219e127a9afa86d539ed", "sha256": "0c19a7f3ad99bc33ab1f3496496dadf0859bf32d067b8085311122b8a5702c93" }, "downloads": -1, "filename": "dipc-0.4.tar.gz", "has_sig": false, "md5_digest": "653f95cca5d8219e127a9afa86d539ed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3587, "upload_time": "2013-04-05T15:19:04", "url": "https://files.pythonhosted.org/packages/cb/88/0cc5777d999dd488cec78fce65bc4bfc768bea92b9d6e6cefd687d152213/dipc-0.4.tar.gz" } ] }