{ "info": { "author": "Allen Sanabria", "author_email": "asanabria@linuxdynasty.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Build Tools" ], "description": "========================================\nAWSRetry - Boto3 Retry/Backoff Decorator\n========================================\n\nAWSRetry is a Python Decorator that can be used to wrap boto3 function calls.\nThis function was built out of the need to get around a couple of common issues\nwhen working with AWS API's.\n\n* Query API Request Rate\n* Eventual Consistency Model.\n\n\nExceptions that will get retried when encountered\n-------------------------------------------------\n* RequestLimitExceeded\n* Unavailable\n* ServiceUnavailable\n* InternalFailure\n* InternalError\n* ^\\w+.NotFound\n\nThis list can be extended. (http://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html)\n\nQuick Start\n-----------\nInstall awsretry.\n\n.. code-block:: sh\n\n $ pip install awsretry\n\nI will assume you know about setting up Boto3 Credentials, if not you can read\nthe instructions here http://boto3.readthedocs.io/en/latest/guide/configuration.html\n\n\nKeyword Arguments that AWSRetry.backoff accepts\n-----------------------------------------------\n\n* tries = The number of times to try before giving up. Default = 10\n* delay = The initial delay between retries in seconds. Default = 3\n* backoff = backoff multiplier e.g. value of 2 will double the delay each retry. Default = 1.1\n* added_exceptions = Other exceptions to retry on, beyond the defaults. Default = list()\n\nExamples\n--------\nWrite a quick function that implements AWSRetry.backoff()\n\n.. code-block:: python\n\n #!/usr/bin/env python\n\n import botocore\n import boto3\n from awsretry import AWSRetry\n\n\n @AWSRetry.backoff()\n def get_instances():\n client = boto3.client('ec2')\n try:\n instances = client.describe_instances()\n return instances\n except botocore.exceptions.ClientError as e:\n raise e\n\n instances = get_instances()\n\nWrite a quick function that will overwrite the default arguments.\n\n.. code-block:: python\n\n #!/usr/bin/env python\n\n import botocore\n import boto3\n from awsretry import AWSRetry\n\n\n @AWSRetry.backoff(tries=20, delay=2, backoff=1.5, added_exceptions=['ConcurrentTagAccess'])\n def create_tags():\n client = boto3.client('ec2')\n try:\n resources = ['1-12345678891234']\n tags = [{'Key': 'service', 'Value': 'web-app'}]\n instances = client.create_tags(Resources=resources, Tags=tags)\n except botocore.exceptions.ClientError as e:\n raise e\n\n create_tags()\n\nDevelopment\n-----------\nAssuming that you have Python and ``virtualenv`` installed, set up your\nenvironment and install the required dependencies like this instead of\nthe ``pip install awsretry`` defined above:\n\n.. code-block:: sh\n\n $ git clone https://github.com/linuxdynasty/awsretry.git\n $ cd awsretry\n $ virtualenv venv\n ...\n $ . venv/bin/activate\n $ pip install -r requirements.txt\n $ pip install -e .\n\nRunning Tests\n-------------\n\nYou can run the tests by using tox which implements nosetest or run them\ndirectly using nosetest.\n\n.. code-block:: sh\n\n $ tox\n $ tox tests/test_awsretry.py\n $ tox -e py27,py36 tests/\n $ nosetest", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/linuxdynasty/awsretry", "keywords": "boto3 aws retry awsretry backoff", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "gd-awsretry", "package_url": "https://pypi.org/project/gd-awsretry/", "platform": "", "project_url": "https://pypi.org/project/gd-awsretry/", "project_urls": { "Homepage": "https://github.com/linuxdynasty/awsretry" }, "release_url": "https://pypi.org/project/gd-awsretry/1.1.2/", "requires_dist": null, "requires_python": "", "summary": "Decorate your AWS Boto3 Calls with AWSRetry.backoff(). This will allows your calls to get around the AWS Eventual Consistency Errors.", "version": "1.1.2" }, "last_serial": 5308475, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "9c0fd7e818745277857f45b591cae4c5", "sha256": "45468af04718bc76af55099a397b8709b1afcf659f9a8d921fd7c91e93878169" }, "downloads": -1, "filename": "gd-awsretry-1.0.2.tar.gz", "has_sig": false, "md5_digest": "9c0fd7e818745277857f45b591cae4c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4209, "upload_time": "2019-05-16T15:12:43", "url": "https://files.pythonhosted.org/packages/84/18/ce8ea9a5f8b6d00506621c6ad232ec0f83bfad98381739f4058249106048/gd-awsretry-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "cbb2eda33a0ee432c3f7b0607c9c05cd", "sha256": "c1704c0827d33c4c9e0d2f1e466faed69316df8da1f0e475e37536b66b4d00ee" }, "downloads": -1, "filename": "gd-awsretry-1.0.3.tar.gz", "has_sig": false, "md5_digest": "cbb2eda33a0ee432c3f7b0607c9c05cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4327, "upload_time": "2019-05-16T15:28:47", "url": "https://files.pythonhosted.org/packages/33/7c/5c66e5cf4628896577ef4910560daf775d98f8bff0c3ae2be5588568392f/gd-awsretry-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "8a3fc929ccd79f7eac842ad284c64cbb", "sha256": "bc0b64c4efb46e99c60d403692a16b093d6282fd1a33aa8bdd06fd9fda9a5774" }, "downloads": -1, "filename": "gd-awsretry-1.0.4.tar.gz", "has_sig": false, "md5_digest": "8a3fc929ccd79f7eac842ad284c64cbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4337, "upload_time": "2019-05-16T15:38:35", "url": "https://files.pythonhosted.org/packages/a2/bf/610f56bcfe778832951d072edcb4537133ddd225bd9b46e21712e0c2b376/gd-awsretry-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "cd5608f7c7e7bf343a4b7b2eb20610f9", "sha256": "689fdb11e7f8635b98100d0f0c78e75d9164ee3afc80717576dbb15a2ba49ab9" }, "downloads": -1, "filename": "gd-awsretry-1.0.5.tar.gz", "has_sig": false, "md5_digest": "cd5608f7c7e7bf343a4b7b2eb20610f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4329, "upload_time": "2019-05-17T10:16:18", "url": "https://files.pythonhosted.org/packages/ea/ee/dbc794d7cc1ed94f3c613dda3c0c73c42e4f345620de3c54720b5f52730e/gd-awsretry-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "e80fba9a302b29ba14b036c1287ed798", "sha256": "24adbb43e0e7554879b983f38eae9deae46a957e97141015aa88150b82bee69c" }, "downloads": -1, "filename": "gd-awsretry-1.0.6.tar.gz", "has_sig": false, "md5_digest": "e80fba9a302b29ba14b036c1287ed798", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4371, "upload_time": "2019-05-17T12:54:30", "url": "https://files.pythonhosted.org/packages/00/57/c77505fd7f09b7f19ce8de1bc73e871db43bdc5fe9b1236c6982328917c4/gd-awsretry-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "ddb23e909c98bb4d9a95ebe77e6f9496", "sha256": "7edbd12b8e0d8b6bcfa139fa58abb07bdc745d3e1e8b64a5acd50ffb749e843c" }, "downloads": -1, "filename": "gd-awsretry-1.0.7.tar.gz", "has_sig": false, "md5_digest": "ddb23e909c98bb4d9a95ebe77e6f9496", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4424, "upload_time": "2019-05-17T16:23:58", "url": "https://files.pythonhosted.org/packages/13/e6/e5599b625edb14db77240770ba4dc5938f05c8267aa17db0400443b7616c/gd-awsretry-1.0.7.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "3d2291eea0fe04bea8e374558aee9c14", "sha256": "b411de5f31a81836d8c361d4e21fec8b0819a1129ff75d72af2b081d7507fe9b" }, "downloads": -1, "filename": "gd-awsretry-1.1.0.tar.gz", "has_sig": false, "md5_digest": "3d2291eea0fe04bea8e374558aee9c14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4448, "upload_time": "2019-05-23T13:51:55", "url": "https://files.pythonhosted.org/packages/d5/f3/e64413c54948bc7343fb221bb6b752832d41c62975820ff75e7df446407b/gd-awsretry-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "42973c1996deca8f304a85517ece6c19", "sha256": "7420cfd3f29660363afbaafb9ad916f50e633f2038829d8a85b6c469ae397a2d" }, "downloads": -1, "filename": "gd-awsretry-1.1.1.tar.gz", "has_sig": false, "md5_digest": "42973c1996deca8f304a85517ece6c19", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4459, "upload_time": "2019-05-23T14:01:14", "url": "https://files.pythonhosted.org/packages/0b/03/6dd11f59a85b0f7ccb26e4bc10849acda5aff14dbdc615f75e4d415cd06a/gd-awsretry-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "987ac639740b5e84c7c4a698e87b743c", "sha256": "cc507dcda9baa811662eca270f01f4905cba7ad81aa893cdb383e4c3cec7bdbd" }, "downloads": -1, "filename": "gd-awsretry-1.1.2.tar.gz", "has_sig": false, "md5_digest": "987ac639740b5e84c7c4a698e87b743c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4460, "upload_time": "2019-05-23T17:24:38", "url": "https://files.pythonhosted.org/packages/76/d3/9219a27d36f127e067ea7a2005628149af6a6ae179d8595595e9cf369361/gd-awsretry-1.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "987ac639740b5e84c7c4a698e87b743c", "sha256": "cc507dcda9baa811662eca270f01f4905cba7ad81aa893cdb383e4c3cec7bdbd" }, "downloads": -1, "filename": "gd-awsretry-1.1.2.tar.gz", "has_sig": false, "md5_digest": "987ac639740b5e84c7c4a698e87b743c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4460, "upload_time": "2019-05-23T17:24:38", "url": "https://files.pythonhosted.org/packages/76/d3/9219a27d36f127e067ea7a2005628149af6a6ae179d8595595e9cf369361/gd-awsretry-1.1.2.tar.gz" } ] }