{ "info": { "author": "Patrick Lehmann", "author_email": "Paebbels@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3 :: Only", "Topic :: Internet :: WWW/HTTP :: HTTP Servers" ], "description": "![PyPI - License](https://img.shields.io/pypi/l/Semaphore-Microservice)\n![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/Paebbels/Semaphore-Microservice) \n![GitHub release (latest by date)](https://img.shields.io/github/v/release/Paebbels/Semaphore-Microservice)\n[![Documentation Status](https://readthedocs.org/projects/semaphore-microservice/badge/?version=latest)](https://semaphore-microservice.readthedocs.io/en/latest/?badge=latest) \n[![PyPI](https://img.shields.io/pypi/v/Semaphore-Microservice)](https://pypi.org/project/Semaphore-Microservice/)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/Semaphore-Microservice)\n![PyPI - Wheel](https://img.shields.io/pypi/wheel/Semaphore-Microservice)\n![PyPI - Status](https://img.shields.io/pypi/status/Semaphore-Microservice)\n\n# Semaphore Microservice\n\nThis HTTP-based microservice offers a ReST API to acquire and release resources\nthat are limited with a *semaphore* semantic.\n\n## Use Cases\n### Limited Number of Licenses in an Continuous Integration Environment\n\nSome software uses a global license server to checkout licenses while the software\nis executed. By default many license consumers (clients) fail and abort the\nexecution if no valid license was found or if no license was free for a checkout.\nIn such cases, a CI pipeline would also fail, because the job is failing caused by\nthe license error. In many cases there are no retries nor waits for a license to\nbecome valid or available again. More over waiting time would be counted as job\nexecution time.\n\nThis semaphore service allow to acquire a license virtually before asking the actual\nlicense server. If no license is available, it will either wait or register a\ncallback for the real working job.\n\n## Operations\n\n\n## Architecture\n\n```\nApplication => WebServer => HTTPInterface => Router => API => Semaphore => storage \nDaemon / \\ NGINX + WSGI /\n```\n\n## API\n### v1.0\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/Paebbels/Semaphore-Microservice", "keywords": "Python3 Exceptions", "license": "", "maintainer": "", "maintainer_email": "", "name": "Semaphore-Microservice", "package_url": "https://pypi.org/project/Semaphore-Microservice/", "platform": "", "project_url": "https://pypi.org/project/Semaphore-Microservice/", "project_urls": { "Documentation": "https://Semaphore-Microservice.readthedocs.io/en/latest/", "Homepage": "https://github.com/Paebbels/Semaphore-Microservice", "Issue Tracker": "https://github.com/Paebbels/Semaphore-Microservice/issues", "Source Code": "https://github.com/Paebbels/Semaphore-Microservice" }, "release_url": "https://pypi.org/project/Semaphore-Microservice/0.1.1/", "requires_dist": [ "ruamel.yaml", "py-flags", "pyAttributes", "pyExceptions", "pyGenericPath", "pyHTTPInterface", "pyHTTPServer", "pyHTTPRequestRouter", "SphinxExtensions" ], "requires_python": ">=3.5", "summary": "A HTTP-based microservice offering a ReST API to acquire and release resources that are limited with a semaphore semantic.", "version": "0.1.1" }, "last_serial": 5965126, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e42799817904614792adea3aeea32e66", "sha256": "e1a0bc45db591567ed4167ad68f11a99e06ad082b47f3965081191ead2f7d288" }, "downloads": -1, "filename": "Semaphore_Microservice-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e42799817904614792adea3aeea32e66", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9484, "upload_time": "2019-10-12T18:51:05", "url": "https://files.pythonhosted.org/packages/52/7b/53918f35b447ff1d6345592140112f0593668d5014b0e02a603ac317b3be/Semaphore_Microservice-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "85a986a03480428370a73ed9eacb0404", "sha256": "bca52b1229ab72ff3be1a60484471ae9fba8609a7b2aa809b91f982f825c8b06" }, "downloads": -1, "filename": "Semaphore-Microservice-0.1.0.tar.gz", "has_sig": false, "md5_digest": "85a986a03480428370a73ed9eacb0404", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 4543, "upload_time": "2019-10-12T18:51:07", "url": "https://files.pythonhosted.org/packages/0f/0d/a9433c3ca812cfb211195fb84a4b8ff8923bca3130c388e386be1147313d/Semaphore-Microservice-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "34c482fb946019f97ffaebb449b3245e", "sha256": "1b6b876d19ce953a659432fcf64e6bc21d024283f09f2981460aa8e6a32133a5" }, "downloads": -1, "filename": "Semaphore_Microservice-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "34c482fb946019f97ffaebb449b3245e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 14406, "upload_time": "2019-10-12T19:04:32", "url": "https://files.pythonhosted.org/packages/9f/8c/770c64bed76aef59bf1be8c3fe83c23a82985861c17c3d21d325ab037593/Semaphore_Microservice-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9fa294aab3a73c233231c05549e319bb", "sha256": "742577f6983976eb74853b09fb37e9d74de39ed71b3339a16314a2f2cc6742e9" }, "downloads": -1, "filename": "Semaphore-Microservice-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9fa294aab3a73c233231c05549e319bb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 4923, "upload_time": "2019-10-12T19:04:33", "url": "https://files.pythonhosted.org/packages/4d/89/c36078742eb67f783ba06c95534f25226a7024eb86f569fad61d7afc3bd2/Semaphore-Microservice-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "34c482fb946019f97ffaebb449b3245e", "sha256": "1b6b876d19ce953a659432fcf64e6bc21d024283f09f2981460aa8e6a32133a5" }, "downloads": -1, "filename": "Semaphore_Microservice-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "34c482fb946019f97ffaebb449b3245e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 14406, "upload_time": "2019-10-12T19:04:32", "url": "https://files.pythonhosted.org/packages/9f/8c/770c64bed76aef59bf1be8c3fe83c23a82985861c17c3d21d325ab037593/Semaphore_Microservice-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9fa294aab3a73c233231c05549e319bb", "sha256": "742577f6983976eb74853b09fb37e9d74de39ed71b3339a16314a2f2cc6742e9" }, "downloads": -1, "filename": "Semaphore-Microservice-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9fa294aab3a73c233231c05549e319bb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 4923, "upload_time": "2019-10-12T19:04:33", "url": "https://files.pythonhosted.org/packages/4d/89/c36078742eb67f783ba06c95534f25226a7024eb86f569fad61d7afc3bd2/Semaphore-Microservice-0.1.1.tar.gz" } ] }