{ "info": { "author": "hampsterx", "author_email": "tim.vdh@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# async-kinesis\n\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black) [![PyPI version](https://badge.fury.io/py/async-kinesis.svg)](https://badge.fury.io/py/async-kinesis) [![Python 3.6](https://img.shields.io/badge/python-3.6-blue.svg)](https://www.python.org/downloads/release/python-360/) [![Python 3.6](https://img.shields.io/badge/python-3.7-blue.svg)](https://www.python.org/downloads/release/python-370/)\n\n```\npip install async-kinesis\n```\n\n## Features\n\n- uses queues for both producer and consumer\n - producer flushes with put_records() if has enough to flush or after \"buffer_time\" reached\n - consumer iterates over msg queue independent of shard readers\n- Configurable to handle Sharding limits but will throttle/retry if required\n - ie multiple independent clients are saturating the Shards\n- Checkpointing with heartbeats\n - deadlock + reallocation of shards if checkpoint fails to heartbeat within \"session_timeout\"\n- processors (aggregator + serializer)\n - json line delimited, msgpack\n\n\nSee [docs/design](./docs/DESIGN.md) for more details.\nSee [docs/yetanother](docs/YETANOTHER.md) as to why reinvent the wheel.\n\n## Environment Variables\n\nAs required by boto3\n\n```\nAWS_ACCESS_KEY_ID\nAWS_SECRET_ACCESS_KEY\n```\n\n## Producer\n\n from kinesis import Producer\n\n async with Producer(stream_name=\"test\") as producer:\n # Put item onto queue to be flushed via put_records()\n await producer.put({'my': 'data'})\n\n\nOptions:\n\n(comments in quotes are Kinesis Limits as per AWS Docs)\n\n| Arg | Default | Description |\n| --- | --- | --- |\n| region_name | None | AWS Region |\n| buffer_time | 0.5 | Buffer time in seconds before auto flushing records |\n| put_rate_limit_per_shard | 1000 | \"A single shard can ingest up to 1 MiB of data per second (including partition keys) or 1,000 records per second for writes\" |\n| put_bandwidth_limit_per_shard | 1024 | Kb per sec. max is 1024 per shard (ie 1 MiB). Keep below to minimize ProvisionedThroughputExceeded\" errors |\n| batch_size | 500 | \"Each PutRecords request can support up to 500 records\" |\n| max_queue_size | 10000 | put() method will block when queue is at max |\n| after_flush_fun | None | async function to call after doing a flush (err put_records()) call |\n| processor | JsonProcessor() | Record aggregator/serializer. Default is JSON without aggregation. Note this is highly inefficient as each record can be up to 1Mib |\n\n\n## Consumer\n\n from kinesis import Consumer\n\n async with Consumer(stream_name=\"test\") as consumer:\n while True:\n async for item in consumer:\n print(item)\n # caught up.. take a breather~\n\n\nOptions:\n\n(comments in quotes are Kinesis Limits as per AWS Docs)\n\n\n| Arg | Default | Description |\n| --- | --- | --- |\n| region_name | None | AWS Region |\n| max_queue_size | 10000 | the fetch() task shard will block when queue is at max |\n| max_shard_consumers | None | Max number of shards to use. None = all |\n| record_limit | 10000 | Number of records to fetch with get_records() |\n| sleep_time_no_records | 2 | No of seconds to sleep when caught up |\n| iterator_type | TRIM_HORIZON | Default shard iterator type for new/unknown shards (ie start from start of stream). Alternative is \"LATEST\" (ie end of stream) |\n| shard_fetch_rate | 1 | No of fetches per second (max = 5). 1 is recommended as allows having multiple consumers without hitting the max limit. |\n| checkpointer | MemoryCheckPointer() | Checkpointer to use |\n| processor | JsonProcessor() | Record aggregator/serializer. Must Match processor used by Producer() |\n\n\n## Checkpointers\n\n- memory (the default but kinda pointless)\n\n```\n MemoryCheckPointer()\n```\n\n- redis\n\n```\n RedisCheckPointer(name, session_timeout=60, heartbeat_frequency=15, is_cluster=False)\n```\n\nRequires ENV:\n\n```\n REDIS_HOST\n```\n\nRequires `pip install aredis`\n\n\n## Processors (Aggregator + Serializer)\n\n\nAggregation enable batching up multiple records to more efficiently use the stream.\nRefer https://aws.amazon.com/blogs/big-data/implementing-efficient-and-reliable-producers-with-the-amazon-kinesis-producer-library/\n\n\n| Class | Aggregator | Serializer | Description |\n| --- | --- | --- | --- |\n| StringProcessor | SimpleAggregator | StringSerializer | Single String record |\n| JsonProcessor | SimpleAggregator | JsonSerializer | Single JSON record |\n| JsonLineProcessor | NewlineAggregator | JsonSerializer | Multiple JSON record separated by new line char |\n| MsgpackProcessor | NetstringAggregator | MsgpackSerializer | Multiple Msgpack record framed with Netstring Protocol (https://en.wikipedia.org/wiki/Netstring) |\n\nNote you can define your own processor easily as it's simply a class inheriting the Aggregator + Serializer.\n\n```\nclass MsgpackProcessor(Processor, NetstringAggregator, MsgpackSerializer):\n pass\n```\n\nJust define a new Serializer class with serialize() and deserialize() methods.\n\nNote:\n\n* Json will use `pip install ujson` if installed\n* Msgpack requires `pip install msgpack` to be install \n\n\n## Benchmark/Example\n\nSee [benchmark.py](./benchmark.py) for code\n\n50k items of approx 1k (python) in size, using single shard.\n\n![Benchmark](docs/benchmark.png)\n\n\n## Unit Testing\n\nUses https://github.com/mhart/kinesalite for local testing.\n\nRun tests via docker\n\n```\ndocker-compose up --abort-on-container-exit --exit-code-from test\n```\n\nFor local testing use\n\n```\ndocker-compose up kinesis redis\n```\n\nthen within your virtualenv\n\n```\nnosetests\n\n# or run individual test\nnosetests tests.py:KinesisTests.test_create_stream_shard_limit_exceeded\n```\n\nNote there are a few test cases using the *actual* AWS Kinesis (AWSKinesisTests)\nThese require setting an env in order to run\n\nCreate an \".env\" file with\n\n```\nTESTING_USE_AWS_KINESIS=1\n```\n\nNote you can ignore these tests if submitting PR unless core batching/processing behaviour is being changed.\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/hampsterx/async-kinesis", "keywords": "", "license": "Apache2", "maintainer": "", "maintainer_email": "", "name": "async-kinesis", "package_url": "https://pypi.org/project/async-kinesis/", "platform": "", "project_url": "https://pypi.org/project/async-kinesis/", "project_urls": { "Homepage": "https://github.com/hampsterx/async-kinesis" }, "release_url": "https://pypi.org/project/async-kinesis/0.2.11/", "requires_dist": [ "aiobotocore (>=0.10.2)", "async-timeout (==3.0.1)", "asyncio-throttle (==0.1.1)", "msgpack (>=0.6.1) ; extra == 'msgpack'", "aredis (>=1.1.4) ; extra == 'redis'" ], "requires_python": "", "summary": "AsyncIO Kinesis Library", "version": "0.2.11" }, "last_serial": 5806542, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "7545ecfebd4b706eb17af56907edc4db", "sha256": "ea38ef7bcc6be1e2858afc1700a5ad96815cb614e9433501d12b09b0897358f5" }, "downloads": -1, "filename": "async_kinesis-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7545ecfebd4b706eb17af56907edc4db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11716, "upload_time": "2019-05-21T00:55:28", "url": "https://files.pythonhosted.org/packages/ed/fa/f551b53c31d242ff2072e4f674262a167bc407fd27274fd5b851baff85d4/async_kinesis-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b99719a78a6665d924755776e11a9adc", "sha256": "45c60f6569d525af33298dfac214fcd6227c7a99f085a2c9b1a90794be026436" }, "downloads": -1, "filename": "async-kinesis-0.0.1.tar.gz", "has_sig": false, "md5_digest": "b99719a78a6665d924755776e11a9adc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9668, "upload_time": "2019-05-21T00:55:30", "url": "https://files.pythonhosted.org/packages/4c/94/4cfbe4c38618e267bea29800d58e5e7c9efd2f27de16462a8b02c99e2567/async-kinesis-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "e8e92fe55ba7eee110ae8a65fca22239", "sha256": "f108cbacaee2ace3b6b1a3f9913f2de4fb4c94a2c5eebb34efe72dd328e92146" }, "downloads": -1, "filename": "async_kinesis-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e8e92fe55ba7eee110ae8a65fca22239", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12740, "upload_time": "2019-05-21T05:10:47", "url": "https://files.pythonhosted.org/packages/30/27/2e9181aa0b798a38ca9cb33d6e8ff665c9b9c69737cd72f0b178f04bf29d/async_kinesis-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "683f7a282dd265a539160d76d8f26285", "sha256": "545d2f66d027a49ee2b9774d048f68cc82e35bc0e8f77d4472e41144199a4eb4" }, "downloads": -1, "filename": "async-kinesis-0.0.2.tar.gz", "has_sig": false, "md5_digest": "683f7a282dd265a539160d76d8f26285", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10338, "upload_time": "2019-05-21T05:10:50", "url": "https://files.pythonhosted.org/packages/4c/ff/cec8ed9374d4d8b427ae0ca99665b8becfcbdbb80a661851e95cd63402d6/async-kinesis-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "6d4cd5c3f2fd3889cf1ffa4bd6f0484d", "sha256": "080fc067f053a924dc1bf693a25f82a13ec7fa714cf9b558f8e195054c772015" }, "downloads": -1, "filename": "async_kinesis-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "6d4cd5c3f2fd3889cf1ffa4bd6f0484d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13183, "upload_time": "2019-05-21T19:14:42", "url": "https://files.pythonhosted.org/packages/e8/d7/32cd057e275803a7dc3c7fad017d15ebc3201dabd1a190455a3a64dbc113/async_kinesis-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8baabc12dca44b2d6edec5c99d344c8b", "sha256": "406d23aaa4ea406b00faa52c5275a6fb19e942bf4a7a7ff74c0b00ce5f233729" }, "downloads": -1, "filename": "async-kinesis-0.0.3.tar.gz", "has_sig": false, "md5_digest": "8baabc12dca44b2d6edec5c99d344c8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10793, "upload_time": "2019-05-21T19:14:43", "url": "https://files.pythonhosted.org/packages/b2/0a/d56f5bc2b4ca500883a5d0fb4be0f783eccd0df060457d228b7786b8f5f3/async-kinesis-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "d52e8796775f788d8c9418fa0c1cac4e", "sha256": "f51af7b355147c1868fb75c2b8b09f512d39a027b1b050bee83988dab1db69dc" }, "downloads": -1, "filename": "async_kinesis-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "d52e8796775f788d8c9418fa0c1cac4e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13209, "upload_time": "2019-05-21T21:48:15", "url": "https://files.pythonhosted.org/packages/2e/a9/3bb2168201e125cd618f1682e77b937722a2625f22f5d278166113069bf4/async_kinesis-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d2182745d022490d213da8ec5f5a851c", "sha256": "4ae2afc22180ca30419a8abda7c906dd24a18a2a49ebf8a8f83f08027bd164ef" }, "downloads": -1, "filename": "async-kinesis-0.0.4.tar.gz", "has_sig": false, "md5_digest": "d2182745d022490d213da8ec5f5a851c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10757, "upload_time": "2019-05-21T21:48:17", "url": "https://files.pythonhosted.org/packages/c9/36/f678587a386b2eba467a54d12e3ddc31782c19327eb4c0af75c635c93b6b/async-kinesis-0.0.4.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "443d7388f8cdf229d20ccfdce96c036a", "sha256": "98850feb8f8f805bf687d35c326f9757ce4d5ac0e11da21c7974c13b85438e35" }, "downloads": -1, "filename": "async_kinesis-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "443d7388f8cdf229d20ccfdce96c036a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15231, "upload_time": "2019-05-24T00:32:33", "url": "https://files.pythonhosted.org/packages/db/af/6cc19000fa5ed7f79c031123193cb57aa876dd7d91f5312ac60fe3e51e77/async_kinesis-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a5fd5b2f69500b604aeea2518dc490a0", "sha256": "daf21e153367b94721bcdbe8c315d706ff50ce1ef345b82b8bf538ff2a6c30e6" }, "downloads": -1, "filename": "async-kinesis-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a5fd5b2f69500b604aeea2518dc490a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12337, "upload_time": "2019-05-24T00:32:35", "url": "https://files.pythonhosted.org/packages/ee/d5/ccf90fb47263947c1f4442361e8322d36ef7c3f5e0a0652c3c682dfe332e/async-kinesis-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "137ec9053894d59bd659d1dee7a33159", "sha256": "434384d12efd7c3028d5a327af31939ecea65b0d757024d0a7185cbe380a8b1a" }, "downloads": -1, "filename": "async_kinesis-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "137ec9053894d59bd659d1dee7a33159", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15370, "upload_time": "2019-05-24T04:11:49", "url": "https://files.pythonhosted.org/packages/93/ff/b93d0395fe7f40b0fe9c159fe5f5499ea6f03d591b0d0ea9c29ab8e4f717/async_kinesis-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b92ca8d256c51638293b31d5dbaec7c1", "sha256": "7f0940cd2398d1804e5bec0d8429f458b80e21993726ceb6b36a2ddc48f4d171" }, "downloads": -1, "filename": "async-kinesis-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b92ca8d256c51638293b31d5dbaec7c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12498, "upload_time": "2019-05-24T04:11:51", "url": "https://files.pythonhosted.org/packages/36/c0/bd70ef85cbeed61c375855891a5d47c7af96b3e1ee211e467238c09c7a8b/async-kinesis-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "2a04eb045959b0450cd8258b5cc60b4d", "sha256": "8f42ba166551f19ae3bf7c575c4984384b6b9befc1bdc3ea5176e7419ced04fe" }, "downloads": -1, "filename": "async_kinesis-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2a04eb045959b0450cd8258b5cc60b4d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15499, "upload_time": "2019-05-24T07:39:01", "url": "https://files.pythonhosted.org/packages/03/d4/2df5f774ec67d6c5b0af0a8b88e77047a0d09e8fdc6c43e05d213a345282/async_kinesis-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cee79b085cf20a3bf7be00041fa8467d", "sha256": "100ddece0d23f8dbc5ed8cc1d2cf31c8bcff9d2590ed4444ce3af77f93f9896b" }, "downloads": -1, "filename": "async-kinesis-0.1.2.tar.gz", "has_sig": false, "md5_digest": "cee79b085cf20a3bf7be00041fa8467d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12622, "upload_time": "2019-05-24T07:39:03", "url": "https://files.pythonhosted.org/packages/88/81/6039b136e75bd8533049a3da1325bd303ef37779782beaba06179c376600/async-kinesis-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "fae88dfb069a59eb037fd3ca2e253f6f", "sha256": "b4edc82a85a1390fcfa89fe4c3c01f53896d6c9439175c3ba969239e7fc708cc" }, "downloads": -1, "filename": "async_kinesis-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fae88dfb069a59eb037fd3ca2e253f6f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15646, "upload_time": "2019-06-19T05:27:12", "url": "https://files.pythonhosted.org/packages/8a/da/9abd06c2854687bb2ae05c93d35b86108d958f86fbc7dd1124ab6fb8537a/async_kinesis-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad0315c3fddbf638096e3a0e16f5e0d4", "sha256": "0669adb19460208628f219d9d27e10966b508e1820ce8b42a2ffbbdf0d26fa5c" }, "downloads": -1, "filename": "async-kinesis-0.2.0.tar.gz", "has_sig": false, "md5_digest": "ad0315c3fddbf638096e3a0e16f5e0d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12783, "upload_time": "2019-06-19T05:27:13", "url": "https://files.pythonhosted.org/packages/d4/0e/3b35a2ad3db8858438848eceddbd782ba385e0914387a7179e64dfc11b25/async-kinesis-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "80d8af4fb6d086f9e67ab03078a79cbe", "sha256": "118a554d6cc80026cd6ad4ba81f6679a1bff43ea7f0d1b98d7c9220e30884fd2" }, "downloads": -1, "filename": "async_kinesis-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "80d8af4fb6d086f9e67ab03078a79cbe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15702, "upload_time": "2019-06-23T23:36:00", "url": "https://files.pythonhosted.org/packages/62/12/0407dcd290443bfa488ae30bf97065be730dc0677be658642fb87592143b/async_kinesis-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6e64f939793cc93f6404f70c3a0d3eae", "sha256": "8e35a95f3682fbd140fd5d609133a1355a26536b48cab4a580977e63b5370b2e" }, "downloads": -1, "filename": "async-kinesis-0.2.1.tar.gz", "has_sig": false, "md5_digest": "6e64f939793cc93f6404f70c3a0d3eae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12792, "upload_time": "2019-06-23T23:36:02", "url": "https://files.pythonhosted.org/packages/a6/aa/e9b495ba303708d20e3d426531f9317c0562c0c414834cad5a44338c57a8/async-kinesis-0.2.1.tar.gz" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "56dbb29a13de937676bb39e50f9f1ad5", "sha256": "53ccab9a1a5d92950b3c07eeacc0c830dc8f844e5a6eed85c260c1001c74a9a9" }, "downloads": -1, "filename": "async_kinesis-0.2.10-py3-none-any.whl", "has_sig": false, "md5_digest": "56dbb29a13de937676bb39e50f9f1ad5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20634, "upload_time": "2019-09-10T02:23:11", "url": "https://files.pythonhosted.org/packages/f2/47/1883d6f56803c7cb41adaf7c060aa4c6ea6d5cc58f01ec45ab010f39a3f6/async_kinesis-0.2.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "865345c83c72a835fb03a9c0609aab60", "sha256": "95abf9e249413fe564c38cda9e084778a5d3a28fc3981778773736b65db02bb4" }, "downloads": -1, "filename": "async-kinesis-0.2.10.tar.gz", "has_sig": false, "md5_digest": "865345c83c72a835fb03a9c0609aab60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13605, "upload_time": "2019-09-10T02:23:13", "url": "https://files.pythonhosted.org/packages/30/f7/ee2b6f54d85aa5accf7808dbe1fd8b9056fb4cdaa242042a009e3b247ee2/async-kinesis-0.2.10.tar.gz" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "885e3ac25482a07b8b79ec5615faff72", "sha256": "b44f8a77e59e90acba16edd3ef3ff78ec62df7874eb06db64e1c7ce908417501" }, "downloads": -1, "filename": "async_kinesis-0.2.11-py3-none-any.whl", "has_sig": false, "md5_digest": "885e3ac25482a07b8b79ec5615faff72", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20658, "upload_time": "2019-09-10T02:31:59", "url": "https://files.pythonhosted.org/packages/a1/30/c486dcdc12b8adad60186282d06033b343dd0d4aac1f632a8b5f7a6180a6/async_kinesis-0.2.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ca28e9a1da743900f58979f94d6b3cf", "sha256": "f5d2e7e0a4157e49a6f3f0b91ffbc074de51249d94184509766928d59ade1cbc" }, "downloads": -1, "filename": "async-kinesis-0.2.11.tar.gz", "has_sig": false, "md5_digest": "4ca28e9a1da743900f58979f94d6b3cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13620, "upload_time": "2019-09-10T02:32:01", "url": "https://files.pythonhosted.org/packages/68/a8/bb078a15638da55d5c5f56f5676ce8a351a72fc14cf22759fa9239f0af1a/async-kinesis-0.2.11.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "b7d4ac1eb335a9da0f371a0d0c966ec0", "sha256": "4dc55e054d2e4799cfe83bb3e4e147d2ef4b1a63a2068cd3c03267ed14a325a7" }, "downloads": -1, "filename": "async_kinesis-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b7d4ac1eb335a9da0f371a0d0c966ec0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15753, "upload_time": "2019-06-24T00:19:18", "url": "https://files.pythonhosted.org/packages/f4/41/916cc4fa07cd455298923256a11a22fead90a6dd0057bcf228f2efcfe4d6/async_kinesis-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd8dfd7e2bd2363f3d1a68b041b46ff0", "sha256": "082f755562f3d97d4e536c53d5740f0368344310cd448e0a95385c7f6fc8c2c8" }, "downloads": -1, "filename": "async-kinesis-0.2.2.tar.gz", "has_sig": false, "md5_digest": "bd8dfd7e2bd2363f3d1a68b041b46ff0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12832, "upload_time": "2019-06-24T00:19:20", "url": "https://files.pythonhosted.org/packages/1d/ee/b72cffe0183630aabf96cb9a5bad4429f2a16331d78bb8231164c5ade75d/async-kinesis-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "16d80de9f5e2a250a1f1d512ff0108ac", "sha256": "5092518f7ce5b6d4a4fd25521460962bae36f4990e061202e6340dd518668f0d" }, "downloads": -1, "filename": "async_kinesis-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "16d80de9f5e2a250a1f1d512ff0108ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15873, "upload_time": "2019-07-10T23:48:24", "url": "https://files.pythonhosted.org/packages/8b/0e/4f34af6acfdc27c8c59db83af6c33fc1b39a8f7e4e60db6af84595b8835c/async_kinesis-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd1be60f51ac40bed4d5f9e97e4806b7", "sha256": "0760b9e3db2305127e37db02e9ab2f8965191a184a8483336a13673406b9960f" }, "downloads": -1, "filename": "async-kinesis-0.2.3.tar.gz", "has_sig": false, "md5_digest": "cd1be60f51ac40bed4d5f9e97e4806b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12955, "upload_time": "2019-07-10T23:48:26", "url": "https://files.pythonhosted.org/packages/17/41/de16f7f3e3a7187f3ac74fd9f067e52fa0328ec6ca77653a70d227f15989/async-kinesis-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "3339caa23111210bdb3ab25851b50036", "sha256": "93ad9a43f27269336a276d8f69d58f6d82191ec2fd4c2a6d16e5d6f135e4bfa5" }, "downloads": -1, "filename": "async_kinesis-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3339caa23111210bdb3ab25851b50036", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20142, "upload_time": "2019-07-30T23:41:36", "url": "https://files.pythonhosted.org/packages/bf/65/de4e47f67291718c2ba0f2d5658deb2f2ef3004e388deb8c268668a4024c/async_kinesis-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7cbe4bf57e18077d5ba0fbb2fcc1e8d9", "sha256": "d65cc713383e2d0285147d0194e56d130c9922663d0f0715471f0d9f8b3c919a" }, "downloads": -1, "filename": "async-kinesis-0.2.4.tar.gz", "has_sig": false, "md5_digest": "7cbe4bf57e18077d5ba0fbb2fcc1e8d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13164, "upload_time": "2019-07-30T23:41:38", "url": "https://files.pythonhosted.org/packages/31/8a/9138cfe23322375ac1379728412a60cfd9022084a87a093a3632d8277c12/async-kinesis-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "2d820520a78d8ca5653f5b433af58c2b", "sha256": "c1874f7d56b4cb08324375711d5c1e5da26265ae88c69cd47294dff87739ef98" }, "downloads": -1, "filename": "async_kinesis-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2d820520a78d8ca5653f5b433af58c2b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20153, "upload_time": "2019-08-13T20:45:02", "url": "https://files.pythonhosted.org/packages/cb/0f/de53fc35a48e2d71edf1e2aa8383d2c677ac69c8d583bbba6b86e8c44669/async_kinesis-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f3d5b5919989bb865d28540d42bbfbc2", "sha256": "b0283ae4ebf56bbbe0ac169a333e843f8e94ea9bfa643e55bfb8045eed3cff12" }, "downloads": -1, "filename": "async-kinesis-0.2.5.tar.gz", "has_sig": false, "md5_digest": "f3d5b5919989bb865d28540d42bbfbc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13170, "upload_time": "2019-08-13T20:45:04", "url": "https://files.pythonhosted.org/packages/8b/4f/40ed830f1b1156f40edc095bb82cf8256ce218c5420a33eb5d83cfaa2013/async-kinesis-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "3f9f8cdd1a85b870aae862044476efec", "sha256": "4160b674d3e71ed679d9856ece98b60753b8b7771e93eed65c79a439f753a888" }, "downloads": -1, "filename": "async_kinesis-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "3f9f8cdd1a85b870aae862044476efec", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20179, "upload_time": "2019-09-03T00:55:39", "url": "https://files.pythonhosted.org/packages/06/f8/a9a0ea69829efec5b0e40c709b1572ffc615ceb6c4fb3ef896ef0859d9b4/async_kinesis-0.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8af6052e98c6669387d3ac15c0cddf70", "sha256": "86f0dfddce6c4f3841eeab98e433c4697e037c25aa1c17052d005c1989acacce" }, "downloads": -1, "filename": "async-kinesis-0.2.6.tar.gz", "has_sig": false, "md5_digest": "8af6052e98c6669387d3ac15c0cddf70", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13218, "upload_time": "2019-09-03T00:55:41", "url": "https://files.pythonhosted.org/packages/72/f7/d9da4c66e0b6dd338b858e5b266aa1823281fc691fd196287aabf3a94d13/async-kinesis-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "f9a31bb0947497be297bef5fc2f86cdc", "sha256": "3c029daa48f897ddf1aad8566b845dfc441b61c8dbf08189420324764a1bac75" }, "downloads": -1, "filename": "async_kinesis-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "f9a31bb0947497be297bef5fc2f86cdc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20187, "upload_time": "2019-09-03T23:17:05", "url": "https://files.pythonhosted.org/packages/e8/57/a1564ce29755b633c904b20a1fcfa280ede7a13ad47ed7dccc5d468ded56/async_kinesis-0.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aafdbd6f3e848aa69d4ef32c4d2b3617", "sha256": "42220989c934b643151c1e31b5094c183155e2f597f208a18c727b2a7a88efc3" }, "downloads": -1, "filename": "async-kinesis-0.2.7.tar.gz", "has_sig": false, "md5_digest": "aafdbd6f3e848aa69d4ef32c4d2b3617", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13225, "upload_time": "2019-09-03T23:17:07", "url": "https://files.pythonhosted.org/packages/ab/b8/40b90388e44b27d76b5bd4d2f1ac85f0c093b7073829e523b2cf7870c1ca/async-kinesis-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "cc6e2dd4491ba29abe230c4dc1d7ca55", "sha256": "ddf571924eee3143e81faecc354e606d3488a81d8701e98f36c3d9ff97bb381e" }, "downloads": -1, "filename": "async_kinesis-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "cc6e2dd4491ba29abe230c4dc1d7ca55", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20215, "upload_time": "2019-09-05T04:23:09", "url": "https://files.pythonhosted.org/packages/c5/fa/61ed649a81b61783ac52da15c70830836dec0b7b34b45880ff1e7c9f5aab/async_kinesis-0.2.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e1e8e5fc340e52014b4167ab0d7d33d4", "sha256": "6d6359b7da74032ab08d71b69cef2a97bd0df7fa2465462ff9295bb5e4ae4c6e" }, "downloads": -1, "filename": "async-kinesis-0.2.8.tar.gz", "has_sig": false, "md5_digest": "e1e8e5fc340e52014b4167ab0d7d33d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13262, "upload_time": "2019-09-05T04:23:11", "url": "https://files.pythonhosted.org/packages/38/af/84ccacc64b68f320c5274bf433315c8f1471e26685b3eb70971ab6e83386/async-kinesis-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "da16dd01ff73c6d2d861b714a1b6e8aa", "sha256": "fe902263a1dc49a49de74f440a5d0ec7417e67c475c1413e0d4c1c7040d3d500" }, "downloads": -1, "filename": "async_kinesis-0.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "da16dd01ff73c6d2d861b714a1b6e8aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20255, "upload_time": "2019-09-08T22:57:21", "url": "https://files.pythonhosted.org/packages/09/98/ead235e1c01f4a7826a1e7a0028df9a1c4e777c65e5b08184bac7287a0f4/async_kinesis-0.2.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7bb6bc33abea22c909850c30619c018b", "sha256": "f5e61a5ffb665b587716fc87a994261a61301945be784a59fb5e419e8c8af907" }, "downloads": -1, "filename": "async-kinesis-0.2.9.tar.gz", "has_sig": false, "md5_digest": "7bb6bc33abea22c909850c30619c018b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13283, "upload_time": "2019-09-08T22:57:23", "url": "https://files.pythonhosted.org/packages/d2/cd/9ace04113189bae11261b013aa0f0997a2d1893dcf520738aaee69102cdb/async-kinesis-0.2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "885e3ac25482a07b8b79ec5615faff72", "sha256": "b44f8a77e59e90acba16edd3ef3ff78ec62df7874eb06db64e1c7ce908417501" }, "downloads": -1, "filename": "async_kinesis-0.2.11-py3-none-any.whl", "has_sig": false, "md5_digest": "885e3ac25482a07b8b79ec5615faff72", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20658, "upload_time": "2019-09-10T02:31:59", "url": "https://files.pythonhosted.org/packages/a1/30/c486dcdc12b8adad60186282d06033b343dd0d4aac1f632a8b5f7a6180a6/async_kinesis-0.2.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ca28e9a1da743900f58979f94d6b3cf", "sha256": "f5d2e7e0a4157e49a6f3f0b91ffbc074de51249d94184509766928d59ade1cbc" }, "downloads": -1, "filename": "async-kinesis-0.2.11.tar.gz", "has_sig": false, "md5_digest": "4ca28e9a1da743900f58979f94d6b3cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13620, "upload_time": "2019-09-10T02:32:01", "url": "https://files.pythonhosted.org/packages/68/a8/bb078a15638da55d5c5f56f5676ce8a351a72fc14cf22759fa9239f0af1a/async-kinesis-0.2.11.tar.gz" } ] }