{ "info": { "author": "Konstantin Togoi", "author_email": "konstantin.togoi@protonmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# aiothrottling\n\n[![PyPI](https://img.shields.io/pypi/v/aiothrottling.svg)](https://pypi.python.org/pypi/aiothrottling)\n[![PyPI version](https://img.shields.io/pypi/pyversions/aiothrottling.svg)](https://pypi.python.org/pypi/aiothrottling)\n[![Documentation](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://KonstantinTogoi.github.io/aiothrottling)\n\nThrottles for Python coroutines.\n\n## Getting started\n\naiothrottling requires python 3.5+. Install package using pip\n\n```python\npip install aiothrottling\n```\n\n## Examples\n\n### rates\n\nThe allowed coroutine call rate is determined by the ``rate`` argument. Pass the rate in the format `{limit}/{base period name}` or `{limit}/{factor}{base period name}`, for example\n\n- full period name\n + `1/second`, `2/minute`, `3/hour`, `4/day`\n- short period name\n + `4/s`, `5/m`, `6/h`, `7/d`\n- set custom period by using a factor\n + `1/3s`, `12/37m`, `1/5h`, `8/3d`\n\n### decorator\n\nUse of `aiothrottling.Throttle` as decorator for coroutines:\n\n```python\nfrom aiothrottling import throttle # Throttle alias\nimport time\n\n@throttle(rate='1/s')\nasync def foo(n):\n print(n, time.time())\n\nfor i in range(5):\n await foo(i)\n\n# 0 1563272100.4413373\n# 1 1563272101.4427333\n# 2 1563272102.4441307\n# 3 1563272103.445542\n# 4 1563272104.4468124\n```\n\n### awaitable\n\nUse of `aiothrottling.Throttle` as awaitable object:\n\n```python\nfrom aiothrottling import Throttle\nimport time\n\nthrottle = Throttle(rate='1/s')\n\nasync def foo(n):\n print(n, time.time())\n\nfor i in range(5):\n await throttle\n await foo(i)\n\n# 0 1563275828.253736\n# 1 1563275829.2547996\n# 2 1563275830.2562528\n# 3 1563275831.257302\n# 4 1563275832.2587304\n```\n\n### context manager\n\nUse of `aiothrottling.Throttle` as context:\n\n```python\nfrom aiothrottling import Throttle\nimport time\n\nthrottle = Throttle(rate='1/s')\n\nasync def foo(n):\n print(n, time.time())\n\nfor i in range(5):\n async with throttle:\n await foo(i)\n\n# 0 1563275898.6722345\n# 1 1563275899.673589\n# 2 1563275900.6750457\n# 3 1563275901.6763387\n# 4 1563275902.6777005\n```\n\n## License\n\n**aiothrottling** is released under the BSD 2-Clause License.\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/KonstantinTogoi/aiothrottling", "keywords": "asyncio api throttling throttler", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "aiothrottling", "package_url": "https://pypi.org/project/aiothrottling/", "platform": "", "project_url": "https://pypi.org/project/aiothrottling/", "project_urls": { "Homepage": "https://github.com/KonstantinTogoi/aiothrottling" }, "release_url": "https://pypi.org/project/aiothrottling/0.0.4/", "requires_dist": null, "requires_python": "", "summary": "Throttles for Python coroutines.", "version": "0.0.4" }, "last_serial": 5969508, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "f4f7bd71cfd703de3e83786f205057b9", "sha256": "33bc72a121a0a07aa730ba93428e73c74cb0d2dd5c9c6147f703a01cffed0a2f" }, "downloads": -1, "filename": "aiothrottling-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f4f7bd71cfd703de3e83786f205057b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3589, "upload_time": "2019-07-16T11:42:24", "url": "https://files.pythonhosted.org/packages/59/16/1b9b0903282112f3ba89351917ce8fbaf9cba021e65a2b294e52131316c0/aiothrottling-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "204945be923971b26a044d1aa6bdd853", "sha256": "3324b81d9b0f4254bce591ed553c84707fae4eb50d4917d587f6cf0d1e807c55" }, "downloads": -1, "filename": "aiothrottling-0.0.1.tar.gz", "has_sig": false, "md5_digest": "204945be923971b26a044d1aa6bdd853", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2296, "upload_time": "2019-07-16T11:42:26", "url": "https://files.pythonhosted.org/packages/c8/37/15ce602e25a095d81d93eb3f197c2c2374f47fd8dd41509916a39831d51c/aiothrottling-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "3905720481dea5af2375830cba9f6cd7", "sha256": "764ee395661938766e4ea95b409ecb78df18ba9208312bbe6b157d7f6446a126" }, "downloads": -1, "filename": "aiothrottling-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3905720481dea5af2375830cba9f6cd7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3589, "upload_time": "2019-07-17T11:00:54", "url": "https://files.pythonhosted.org/packages/b8/ef/0b9e64e2b7aa59098ab9e7fe574d9e2ebb050442ba70f94a664aeac38410/aiothrottling-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad632adc5e42f4b6579ea09e5bc07229", "sha256": "af911a048fc1b0ea13c3021313bf57c46b03c48928f2a23066544d3a086cffca" }, "downloads": -1, "filename": "aiothrottling-0.0.2.tar.gz", "has_sig": false, "md5_digest": "ad632adc5e42f4b6579ea09e5bc07229", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2295, "upload_time": "2019-07-17T11:00:55", "url": "https://files.pythonhosted.org/packages/b3/f7/8abb1abec95e44a2c41d63f1216e59868226056420f99e645733eb65798b/aiothrottling-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "ef049d82eb1482931a173ea7cb15848f", "sha256": "a2b2b33c1d583bc3d01bf528a259a64d3dcf288ab68cebd0d54b19ee87fbf03a" }, "downloads": -1, "filename": "aiothrottling-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ef049d82eb1482931a173ea7cb15848f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5230, "upload_time": "2019-10-14T02:22:57", "url": "https://files.pythonhosted.org/packages/c8/61/02d9c6e90b45eedd3b6a1db3115169dd7c415d995bbece171ba1e6ac0651/aiothrottling-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c0feb416dce97ab35a22f94af3bcc6bb", "sha256": "98eb8bff34dd2d19148c42e89e3755a8370bcb674ed843e3f718d9159a971f14" }, "downloads": -1, "filename": "aiothrottling-0.0.3.tar.gz", "has_sig": false, "md5_digest": "c0feb416dce97ab35a22f94af3bcc6bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3766, "upload_time": "2019-10-14T02:22:58", "url": "https://files.pythonhosted.org/packages/a7/7a/168bd9c6a18a8b88b0a82e6f38bbdce5d65f29b788ea5f5e8f4bc799c451/aiothrottling-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "3db6cf0afaad4838619e6f6cc629ca42", "sha256": "a4df97e7e4b014b3fe5c6cc928782f51b790ca23c370b335e032b76a4853a762" }, "downloads": -1, "filename": "aiothrottling-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3db6cf0afaad4838619e6f6cc629ca42", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5335, "upload_time": "2019-10-14T02:34:49", "url": "https://files.pythonhosted.org/packages/66/d4/763381d23bb7441990e7463485c3da2f668b6df8646e4e10bd94931107cb/aiothrottling-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1982ad0ebdf6921cd78aaed8679afa76", "sha256": "51737d5846e17f6d3ef6b27a98f3757f5429deed2db1618c7c59d0dc509295d6" }, "downloads": -1, "filename": "aiothrottling-0.0.4.tar.gz", "has_sig": false, "md5_digest": "1982ad0ebdf6921cd78aaed8679afa76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3861, "upload_time": "2019-10-14T02:34:51", "url": "https://files.pythonhosted.org/packages/d1/d2/d12a9e208a91673ef8b5140e0783338bcb535308d20cf59399f7d4b7b27e/aiothrottling-0.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3db6cf0afaad4838619e6f6cc629ca42", "sha256": "a4df97e7e4b014b3fe5c6cc928782f51b790ca23c370b335e032b76a4853a762" }, "downloads": -1, "filename": "aiothrottling-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3db6cf0afaad4838619e6f6cc629ca42", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5335, "upload_time": "2019-10-14T02:34:49", "url": "https://files.pythonhosted.org/packages/66/d4/763381d23bb7441990e7463485c3da2f668b6df8646e4e10bd94931107cb/aiothrottling-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1982ad0ebdf6921cd78aaed8679afa76", "sha256": "51737d5846e17f6d3ef6b27a98f3757f5429deed2db1618c7c59d0dc509295d6" }, "downloads": -1, "filename": "aiothrottling-0.0.4.tar.gz", "has_sig": false, "md5_digest": "1982ad0ebdf6921cd78aaed8679afa76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3861, "upload_time": "2019-10-14T02:34:51", "url": "https://files.pythonhosted.org/packages/d1/d2/d12a9e208a91673ef8b5140e0783338bcb535308d20cf59399f7d4b7b27e/aiothrottling-0.0.4.tar.gz" } ] }