{ "info": { "author": "Chris (Someguy123) @ Privex", "author_email": "chris@privex.io", "bugtrack_url": null, "classifiers": [ "Framework :: Django", "Framework :: Django :: 1.10", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Framework :: Django :: 2.1", "Framework :: Django :: 2.2", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8" ], "description": "\nPrivex's Django Database Lock Manager\n======================================\n\n[![Build Status](https://travis-ci.com/Privex/django-lockmgr.svg?branch=master)](https://travis-ci.com/Privex/django-lockmgr) \n[![Codecov](https://img.shields.io/codecov/c/github/Privex/django-lockmgr.svg)](https://codecov.io/gh/Privex/django-lockmgr)\n[![PyPi Version](https://img.shields.io/pypi/v/django-lockmgr.svg)](https://pypi.org/project/django-lockmgr/)\n![License Button](https://img.shields.io/pypi/l/django-lockmgr) \n![PyPI - Downloads](https://img.shields.io/pypi/dm/django-lockmgr)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/django-lockmgr) \n![PyPI - Django Version](https://img.shields.io/pypi/djversions/django-lockmgr)\n![GitHub last commit](https://img.shields.io/github/last-commit/Privex/django-lockmgr)\n\n\n```\n+===================================================+\n| \u00a9 2019 Privex Inc. |\n| https://www.privex.io |\n+===================================================+\n| |\n| Django Database Lock Manager |\n| License: X11/MIT |\n| |\n| Core Developer(s): |\n| |\n| (+) Chris (@someguy123) [Privex] |\n| |\n+===================================================+\n\nDjango Database Lock Manager - Easy to use lock system using your Django app's database\nCopyright (c) 2019 Privex Inc. ( https://www.privex.io )\n```\n\n# Install with pip\n\nWe recommend at least Python 3.6 - we cannot guarantee compatibility with older versions.\n\n```\npip3 install django-lockmgr\n```\n\nAdd `lockmgr` to your `INSTALLED_APPS`\n\n```python\nINSTALLED_APPS = [\n 'django.contrib.admin.apps.SimpleAdminConfig',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n # ...\n 'lockmgr'\n] \n```\n\nRun the migrations\n\n```bash\n./manage.py migrate lockmgr\n```\n\n# Usage\n\nUse the `LockMgr` in your code like so:\n\n```python\nfrom lockmgr.lockmgr import LockMgr, Locked\n\ntry:\n with LockMgr('mylock') as lck:\n print('The lock \"mylock\" is now locked.')\n lck.lock('otherlock')\n print('The lock \"otherlock\" should also be locked.')\n print('The locks \"mylock\" and \"otherlock\" should now both be cleared.')\nexcept Locked as e:\n print('Error! mylock is already locked: ', type(e), str(e))\n\n```\n\nIf you want to wait for the lock to be released, rather than immediately excepting:\n\n```python\nfrom lockmgr.lockmgr import LockMgr, Locked\n\ntry:\n # expires=60 means the lock will expire after 60 seconds if you don't renew it.\n # wait=90 (must be in 5 second intervals) means: if the key is locked, retry every 5 seconds, if 90 seconds have \n # passed and it's still locked, then give up and raise Locked.\n with LockMgr('somelock', expires=60, wait=90) as lck:\n print('The lock \"somelock\" is now locked.')\n print('The lock \"somelock\" should now be cleared.')\nexcept Locked as e:\n print('Error! After retrying for 90 seconds, \"somelock\" is still locked: ', type(e), str(e))\n\n```\n\nUnit Tests\n===========\n\nTo run the unit tests, clone the project and make a `.env` file containing details for a database:\n\n```\nDB_BACKEND=mysql\nDB_NAME=lockmgr\nDB_USER=someuser\nDB_PASS=mypassword\n```\n\nInstall all required dependencies:\n\n```\npip3 install -r requirements.txt -U\n```\n\nNow run the tests (--verbose for more detailed testing output):\n\n```\n./manage.py test --verbose\n```\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Privex/django-lockmgr", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-lockmgr", "package_url": "https://pypi.org/project/django-lockmgr/", "platform": "", "project_url": "https://pypi.org/project/django-lockmgr/", "project_urls": { "Homepage": "https://github.com/Privex/django-lockmgr" }, "release_url": "https://pypi.org/project/django-lockmgr/1.1.2/", "requires_dist": [ "Django", "privex-helpers (>=1.2.0)", "python-dateutil", "pytz" ], "requires_python": "", "summary": "A locking system for Django apps simply using the database.", "version": "1.1.2" }, "last_serial": 5951926, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "a22408626c56dcad8bcfd5ae211bcb1d", "sha256": "412f0f93edacb8effa2731419df5ced3174babd3be16d5ca41a01467630afaf7" }, "downloads": -1, "filename": "django_lockmgr-1.0.0-py3.7.egg", "has_sig": false, "md5_digest": "a22408626c56dcad8bcfd5ae211bcb1d", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 15783, "upload_time": "2019-09-01T17:27:45", "url": "https://files.pythonhosted.org/packages/d0/bd/da7e97d1df00d2f115d9d0414692deeed085dcff37218e89407e408798ef/django_lockmgr-1.0.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "5992c99e76c8f225bd62206cee93358e", "sha256": "8ebf299c2e08bf989ea376a1e5e48b6d3210695cdedcf77d3e7800e8c8e8404b" }, "downloads": -1, "filename": "django_lockmgr-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5992c99e76c8f225bd62206cee93358e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9800, "upload_time": "2019-09-01T17:27:41", "url": "https://files.pythonhosted.org/packages/f8/cd/cb51b7de1691b0174468e730a62cdcf93e39f79b83d9d6a760201b26d2cf/django_lockmgr-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "352d99d2c7e0e9ff3ea56b85302f6ad5", "sha256": "b40253986dff074c052c26ad35872d8627242defd4889af991d7fb863253ffc5" }, "downloads": -1, "filename": "django-lockmgr-1.0.0.tar.gz", "has_sig": false, "md5_digest": "352d99d2c7e0e9ff3ea56b85302f6ad5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7252, "upload_time": "2019-09-01T17:27:43", "url": "https://files.pythonhosted.org/packages/af/7e/dbbcfea220041fadbde4b4e4ac448dd75ef850a344acf94c89d00c4a376f/django-lockmgr-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "81c2070af906788ec336e43659feb694", "sha256": "b4b59df3323bc492e8b3d1d18b550487526d9272f1cad340e40f4bfced0a92ef" }, "downloads": -1, "filename": "django_lockmgr-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "81c2070af906788ec336e43659feb694", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10103, "upload_time": "2019-10-09T19:44:08", "url": "https://files.pythonhosted.org/packages/fe/1b/85b1af0b4a1b5b63281c9b3cc9112da199325934359cb21fb88ba64e5509/django_lockmgr-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bc02d1fe754c94717da0578310676b80", "sha256": "3246704ac6e410885175eb8dc097d46dcb1c80e36c4a25f7fab230f55aaef1ee" }, "downloads": -1, "filename": "django-lockmgr-1.1.0.tar.gz", "has_sig": false, "md5_digest": "bc02d1fe754c94717da0578310676b80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7636, "upload_time": "2019-10-09T19:44:10", "url": "https://files.pythonhosted.org/packages/ac/2d/11059fd3694a390dcded57a59c290849d78e160b10e425d3a5bbe0627310/django-lockmgr-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "ed955ea684fad00e1648d42e9743994c", "sha256": "cff03b49d30ff774a2a525eef1fe764330fdcbda4bbfc0f2c400722500149237" }, "downloads": -1, "filename": "django_lockmgr-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ed955ea684fad00e1648d42e9743994c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10115, "upload_time": "2019-10-09T20:14:49", "url": "https://files.pythonhosted.org/packages/3d/2a/1d361a78d0f1bd6058ce406e6eed3bacba3c56987bd7e842038df261ce95/django_lockmgr-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc7a81503a682d6c45d90719a3246e0f", "sha256": "509249cebc845d19baec173bdbe1c7aa4e919ba81ef52b40c7f6fe2e0f47201e" }, "downloads": -1, "filename": "django-lockmgr-1.1.1.tar.gz", "has_sig": false, "md5_digest": "dc7a81503a682d6c45d90719a3246e0f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7646, "upload_time": "2019-10-09T20:14:51", "url": "https://files.pythonhosted.org/packages/ba/4e/298a7d7e5189457a2a6363e61214ef148fb2c5046c45fa9e07bbb94451f5/django-lockmgr-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "05dc10fa9778444a3ffb35985186e843", "sha256": "c31330ae8ba9a309301f2663782ab9deaad0eff199c4ca87ea9331672922ee0e" }, "downloads": -1, "filename": "django_lockmgr-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "05dc10fa9778444a3ffb35985186e843", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10112, "upload_time": "2019-10-09T20:36:03", "url": "https://files.pythonhosted.org/packages/ad/39/1b7f34468a6480483f7e02fd435bb08503e682e3162957f2e1e2adb76353/django_lockmgr-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5970ff38ef8678cceccf99eac48ee537", "sha256": "1e9da3d97f9d54bff0c86cf47032d40911ea81c62555d58e82b797e7f05a6ba4" }, "downloads": -1, "filename": "django-lockmgr-1.1.2.tar.gz", "has_sig": false, "md5_digest": "5970ff38ef8678cceccf99eac48ee537", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7639, "upload_time": "2019-10-09T20:36:07", "url": "https://files.pythonhosted.org/packages/b8/12/aab81fad0d4058662ce3a5533b4846c1835653daa28ef1dd65882c1a6240/django-lockmgr-1.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "05dc10fa9778444a3ffb35985186e843", "sha256": "c31330ae8ba9a309301f2663782ab9deaad0eff199c4ca87ea9331672922ee0e" }, "downloads": -1, "filename": "django_lockmgr-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "05dc10fa9778444a3ffb35985186e843", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10112, "upload_time": "2019-10-09T20:36:03", "url": "https://files.pythonhosted.org/packages/ad/39/1b7f34468a6480483f7e02fd435bb08503e682e3162957f2e1e2adb76353/django_lockmgr-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5970ff38ef8678cceccf99eac48ee537", "sha256": "1e9da3d97f9d54bff0c86cf47032d40911ea81c62555d58e82b797e7f05a6ba4" }, "downloads": -1, "filename": "django-lockmgr-1.1.2.tar.gz", "has_sig": false, "md5_digest": "5970ff38ef8678cceccf99eac48ee537", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7639, "upload_time": "2019-10-09T20:36:07", "url": "https://files.pythonhosted.org/packages/b8/12/aab81fad0d4058662ce3a5533b4846c1835653daa28ef1dd65882c1a6240/django-lockmgr-1.1.2.tar.gz" } ] }