{ "info": { "author": "wanderxjtu", "author_email": "wanderhuang@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "# anthunder(a.k.a. sofa-bolt-python)\n\nanthunder(ant thunder) is a sofa-bolt library written in python. \nIt supports RPC calling via 'sofa-bolt + protobuf' protocol.\n\n## requirements\n\n- python3 >= 3.4 (aio classes needs asyncio support)\n- python2.7 (limited support, needs extra 3rd party libraries)\n- mosn >= 1.3 (to use with version >= 0.6)\n- mosn < 1.3 (to use with version < 0.6)\n\n## roadmap\n\n- [x] bolt client(protobuf serialization)\n- [x] service discover via mosn (sofa servicemesh sidecar)\n- [x] bolt server(protobuf serialization)\n- [ ] hessian2 serialization support\n\n## Tutorial\n\n### As client (caller)\n0. Acquire `.proto` file\n1. Execute `protoc --python_out=. *.proto` to compile protobuf file, and get `_pb2.py` file.\n2. Import protobuf classes (postfixed with `_pb2`)\n\n```python\nfrom SampleServicePbResult_pb2 import SampleServicePbResult\nfrom SampleServicePbRequest_pb2 import SampleServicePbRequest\n\nfrom anthunder import AioClient\n\n\nspanctx = SpanContext() # generate a new context, an object of mytracer.SpanContext, stores rpc_trace_context.\n# spanctx = ctx # or transfered from upstream rpc\nclient = AioClient(my_app_name) # my_app_name will be send to sidecar as caller name.\n # will create a thread, and send heartbeat to mesh every 30s\n\ninterface = 'com.alipay.rpc.common.service.facade.pb.SampleServicePb:1.0'\n\n# Subscribe interface\nclient.subscribe(interface)\n\n# Call synchronously\ncontent = client.invoke_sync(interface, \"hello\",\n SampleServicePbRequest(name=some_name).SerializeToString(),\n timeout_ms=500, spanctx=spanctx)\nresult = SampleServicePbResult()\nresult.ParseFromString(content)\n\n# Call asynchronously\n\ndef client_callback(resp):\n # callback function, accepts bytes as the only argument,\n # then do deserialize and further processes\n result = SampleServicePbResult()\n result.ParseFromString(content)\n # do something\n\nfuture = client.invoke_async(interface, \"hello\", \n SampleServicePbRequest(name=some_name).SerializeToString(),\n spanctx=spanctx, callback=client_callback)\n)\n\n```\n\nSee project's unittest for runnable demo\n\n### As server\n\n```python\nfrom anthunder.listener import aio_listener\n\nclass SampleService(object):\n def __init__(self, ctx):\n # service must accept one param as spanctx for rpc tracing support\n self.ctx = ctx\n \n def hello(self, bs: bytes):\n obj = SampleServicePbRequest()\n obj.ParseFromString(bs)\n print(\"Processing Request\", obj)\n return SampleServicePbResult(result=obj.name).SerializeToString()\n\n\nlistener = aio_listener.AioListener(('127.0.0.1', 12200), \"test_app\")\n# register interface and its function, plus its protobuf definition class\nlistener.handler.register_interface(\"com.alipay.rpc.common.service.facade.pb.SampleServicePb:1.0\",\n SampleService)\n# start server in a standalone thread\nlistener.run_threading()\n# or start in current thread\nlistener.run_forever()\n\n# publish interfaces to service mesh\nlistener.publish()\n\n# shutdown the server\nlistener.shutdown()\n\n```\n\n## License\n\nCopyright (c) 2018-present, Ant Financial Service Group\n\nApache License 2.0\n\nSee LICENSE file.\n\n## Thirdparty\n\nPart of the mysockpool package uses codes from [urllib3](https://github.com/urllib3/urllib3) project \nunder the term of MIT License. See origin-license.txt under the mysockpool package.\n\n\n\n# Release History\n## 0.5.6 (2019-03-15)\n### Bugfixes\n - fix a infinite loop bug when parsing protocol\n\n## 0.5.4 (2018-11-09)\n### Bugfixes\n - fix server errors under python2.7\n\n## 0.5.3 (2018-08-27)\n### Feature\n - support antsharecloud parameters.\n\n## 0.5.2 (2018-09-03)\n### Bugfixes\n - fix various errors under python2.7\n\n## 0.5.1 (2018-08-31)\n### Bugfixes\n - sofa trace rpc id may contains str.", "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/alipay/sofa-bolt-python", "keywords": "", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "anthunder", "package_url": "https://pypi.org/project/anthunder/", "platform": "", "project_url": "https://pypi.org/project/anthunder/", "project_urls": { "Homepage": "https://github.com/alipay/sofa-bolt-python" }, "release_url": "https://pypi.org/project/anthunder/0.6.2/", "requires_dist": null, "requires_python": "", "summary": "an(t)thunder is a sofa-bolt protocol lib.", "version": "0.6.2" }, "last_serial": 5394719, "releases": { "0.5.1": [ { "comment_text": "", "digests": { "md5": "28612802c8d3cb5acdb0052b3699c086", "sha256": "82d3be6614f01c6ece6d35813a6d1773fce32c49e29f65d0e1fabf95231051fc" }, "downloads": -1, "filename": "anthunder-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "28612802c8d3cb5acdb0052b3699c086", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 60257, "upload_time": "2018-08-31T04:45:26", "url": "https://files.pythonhosted.org/packages/64/15/0cea8945d5701fa15046e5992b3f22c57cfded2edf811ffc2238f3d9d19b/anthunder-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b6a6ba9f897e82b6a2ec5a10a30e4b26", "sha256": "caf2d4b5e1bd572dc66da69ba6dc3b3a2b5149750a8e0a83d7fe666e39f616f1" }, "downloads": -1, "filename": "anthunder-0.5.1.tar.gz", "has_sig": false, "md5_digest": "b6a6ba9f897e82b6a2ec5a10a30e4b26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30873, "upload_time": "2018-08-31T04:45:38", "url": "https://files.pythonhosted.org/packages/fa/bf/a9df8f9cc231f131bc9542f3f71724a1477c6c0af987f4160ae40e3711a5/anthunder-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "5a0ddd63bf5445936ddadfab5ade0d7a", "sha256": "0313d6c0cb1fc3ab40c8332e1fd5b202012fd2fccb518ae6d0241395190fc443" }, "downloads": -1, "filename": "anthunder-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5a0ddd63bf5445936ddadfab5ade0d7a", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 60191, "upload_time": "2018-09-03T09:14:03", "url": "https://files.pythonhosted.org/packages/85/e4/341bb1d35b785d2d73423db262efdee2b4fb33dc49371cb4978c97dfafff/anthunder-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4bdcc0ae60995b52bb8deae7f4ebdeb", "sha256": "c534231a5668db20eb052904fffc14396f05408fbd21e8f107a8f7599c7a2136" }, "downloads": -1, "filename": "anthunder-0.5.2.tar.gz", "has_sig": false, "md5_digest": "b4bdcc0ae60995b52bb8deae7f4ebdeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31397, "upload_time": "2018-09-03T09:13:46", "url": "https://files.pythonhosted.org/packages/21/51/d822da4ccb2e0bb12051be3687a8c2c71a5039cb9e11279cc03feff5564a/anthunder-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "0dfa9b2a8c51f216a1c7e731dc1e4560", "sha256": "9fd66f925779d9e299e40cb96853e0583876dfbf181591e7a4aa3fa905d3d731" }, "downloads": -1, "filename": "anthunder-0.5.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0dfa9b2a8c51f216a1c7e731dc1e4560", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 60927, "upload_time": "2018-09-18T05:43:32", "url": "https://files.pythonhosted.org/packages/e1/ec/4e9a5c69e02b2b7e9dedaf3065b1b47b50ed7604844b5f7640adee860597/anthunder-0.5.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "69a4da364664cb730cbd2c29304cc51b", "sha256": "5600fc2f315f6d313b6b1503b2b10fdf40e74c6f2b561a813c76f0c6b5baaae8" }, "downloads": -1, "filename": "anthunder-0.5.3.tar.gz", "has_sig": false, "md5_digest": "69a4da364664cb730cbd2c29304cc51b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32116, "upload_time": "2018-09-18T05:45:46", "url": "https://files.pythonhosted.org/packages/c0/0c/5d03f3d3b3d1416a075160cd6b5d3f1c1b759fa039879adbf886348bc254/anthunder-0.5.3.tar.gz" } ], "0.5.3.1": [ { "comment_text": "", "digests": { "md5": "1d3a6d2fc77580a7f46b942e8d51d601", "sha256": "239374c2287b07a4d3db79a7b7d3c21b0de0702f2e34fab89ed0fe931e811126" }, "downloads": -1, "filename": "anthunder-0.5.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1d3a6d2fc77580a7f46b942e8d51d601", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 60815, "upload_time": "2018-10-16T06:08:07", "url": "https://files.pythonhosted.org/packages/08/05/5e3314b565f86a1645cee08ab80f48066abc3c634639e3ceeefbc267971f/anthunder-0.5.3.1-py2.py3-none-any.whl" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "75f4f531ecf609ecf64ad6487a230797", "sha256": "1bfccdeec79f8b16f1c5785d20c6634562fc144d501e7caf6e731dee64376a71" }, "downloads": -1, "filename": "anthunder-0.5.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "75f4f531ecf609ecf64ad6487a230797", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 60894, "upload_time": "2018-11-09T05:38:18", "url": "https://files.pythonhosted.org/packages/48/cd/403b07f848f184e4c3c9e8b59f7891758d0cdc77d831ce7bcbe76b076ba8/anthunder-0.5.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7d254f013513afbec766856a83de2e63", "sha256": "b6f023ae1558c1cbb07c6ece8696fbf534d088ed562480fd5dd8046b452f055a" }, "downloads": -1, "filename": "anthunder-0.5.4.tar.gz", "has_sig": false, "md5_digest": "7d254f013513afbec766856a83de2e63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32902, "upload_time": "2018-11-09T06:19:49", "url": "https://files.pythonhosted.org/packages/c9/f4/52d55b1aa9e264c2bce9a0d7f9732396fc7167df4762fee515eef68acb5c/anthunder-0.5.4.tar.gz" } ], "0.5.4.post1": [ { "comment_text": "", "digests": { "md5": "d2fe7d570ebc11cb1ad564b35ae19ef7", "sha256": "5d6af9d02a2b585569935d60a68a89f399be32916e2526f2736df2cdde69780b" }, "downloads": -1, "filename": "anthunder-0.5.4.post1.tar.gz", "has_sig": false, "md5_digest": "d2fe7d570ebc11cb1ad564b35ae19ef7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32971, "upload_time": "2018-12-14T13:05:19", "url": "https://files.pythonhosted.org/packages/f9/e7/4d34853bcc3600e9aa06a664f5143a0df32ccbfa5310ed3e5c7dc0e02e95/anthunder-0.5.4.post1.tar.gz" } ], "0.5.4.post2": [ { "comment_text": "", "digests": { "md5": "00ed96c3cf77db1c865098f3489c1f5b", "sha256": "a84da8e24fcbb77953e201d4a12328cf285b625160ef88a0dbfd93028fd0cb84" }, "downloads": -1, "filename": "anthunder-0.5.4.post2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "00ed96c3cf77db1c865098f3489c1f5b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 60988, "upload_time": "2019-02-19T07:45:45", "url": "https://files.pythonhosted.org/packages/fe/2a/fb1a47b3483cbf38d2250ddd1a78f7a4cb5f89acc54b0b8a0559b9efed52/anthunder-0.5.4.post2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d532c6cb55192c4bcaecda6f102d5d3", "sha256": "176c8222e7eac98889165db0aab9946ede1b100c98d355a5147e592200ff005a" }, "downloads": -1, "filename": "anthunder-0.5.4.post2.tar.gz", "has_sig": false, "md5_digest": "6d532c6cb55192c4bcaecda6f102d5d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32415, "upload_time": "2019-02-19T07:45:47", "url": "https://files.pythonhosted.org/packages/bc/64/1207731b01e8bc6edaaa2ae5af0f187a868a58faf28b4215ae8e77a84f32/anthunder-0.5.4.post2.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "871415ae79b72624c18cb251e3fb432a", "sha256": "402bec7b5ce57eb661c51398088d042e24b2fc7dd9fb41048f3f75800a7758d7" }, "downloads": -1, "filename": "anthunder-0.5.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "871415ae79b72624c18cb251e3fb432a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 60993, "upload_time": "2019-03-14T11:31:20", "url": "https://files.pythonhosted.org/packages/3d/b0/1ef2aab2fec1182fcd3a6ecd03cedaeb5467b936864addfacd8658b06760/anthunder-0.5.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "727a2a27f711bbdd79a04405c092a72d", "sha256": "29ee11b69871d5682b4b8e832c8d01daf720d2fbe797e3f334c2642beb03463b" }, "downloads": -1, "filename": "anthunder-0.5.5.tar.gz", "has_sig": false, "md5_digest": "727a2a27f711bbdd79a04405c092a72d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32510, "upload_time": "2019-03-14T11:31:54", "url": "https://files.pythonhosted.org/packages/df/28/3c684d44f0ead03e3e5bca9b5c7161355d5c06b7500e666ae79ebf6f96f4/anthunder-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "ddd0a94c3bcca6028707a332fbea719c", "sha256": "270026693f94e9b937500d012e0da488153dd038b930683eb4820ef9f632459e" }, "downloads": -1, "filename": "anthunder-0.5.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ddd0a94c3bcca6028707a332fbea719c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 61094, "upload_time": "2019-03-15T09:26:01", "url": "https://files.pythonhosted.org/packages/cb/7f/f7264946daa339db6931e772415f6ea1ce5a2d0e1b090075c448498d8432/anthunder-0.5.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e9ac1487c5d895ea45e8cd9754a6c79", "sha256": "54179e4887d82abdfa00adecc9f7b910e7960ac7cf0b33e3798be980633407e7" }, "downloads": -1, "filename": "anthunder-0.5.6.tar.gz", "has_sig": false, "md5_digest": "3e9ac1487c5d895ea45e8cd9754a6c79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32647, "upload_time": "2019-03-15T09:35:56", "url": "https://files.pythonhosted.org/packages/a8/0d/106da64f601f99658a9ce8df0895e3d87b3368a6b34b4a87bad6245ffa74/anthunder-0.5.6.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "38b93ccce9a97cbc76e276bfc155a149", "sha256": "6cd34b498344e941d8a04703d45a2278bec4aa0d5922953855ffc0674add454a" }, "downloads": -1, "filename": "anthunder-0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "38b93ccce9a97cbc76e276bfc155a149", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 61131, "upload_time": "2019-05-31T13:18:42", "url": "https://files.pythonhosted.org/packages/61/e3/3dc5588e75f5297f533941fd100b8bded0b3f7722ed0a749235657292856/anthunder-0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8cf940016f42da6eaf9060ec49786b31", "sha256": "bddc8c585cf98adfcf2e5826f842717a30607baf87597208bd019346edb4dafd" }, "downloads": -1, "filename": "anthunder-0.6.tar.gz", "has_sig": false, "md5_digest": "8cf940016f42da6eaf9060ec49786b31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32792, "upload_time": "2019-05-31T13:18:44", "url": "https://files.pythonhosted.org/packages/fb/63/de3034e7885c87968f54c4202618b4e34e94b97d0172c5e4225837aa8768/anthunder-0.6.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "22b1d8c04a92aeacfef787435b33c19c", "sha256": "1a41dab95acc59220735d227995d9109d3d4a95dda8d09df96478c806c49628a" }, "downloads": -1, "filename": "anthunder-0.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "22b1d8c04a92aeacfef787435b33c19c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 61371, "upload_time": "2019-06-05T10:53:53", "url": "https://files.pythonhosted.org/packages/b1/97/328128c85f830f66640fa317bda5029231de3ade428e8789d73bcb39a16c/anthunder-0.6.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d74130792fc9de0da448c34a1c49a5f1", "sha256": "e615050d2789a08256bb076c493a9a2b4434bf2bdcb8acb2d77c8381fd336ae7" }, "downloads": -1, "filename": "anthunder-0.6.1.tar.gz", "has_sig": false, "md5_digest": "d74130792fc9de0da448c34a1c49a5f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33011, "upload_time": "2019-06-05T10:53:55", "url": "https://files.pythonhosted.org/packages/02/36/bd6fc730aad9ebbff04071b2c8def9922126c6ec63f594e8f42a7a65851c/anthunder-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "05f717282210e153fef6a1cc7c7a6abb", "sha256": "e414ddb6d95593a49685174698d4b96b40303377bf2f4147ea3ae0fca74e01a5" }, "downloads": -1, "filename": "anthunder-0.6.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "05f717282210e153fef6a1cc7c7a6abb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 61820, "upload_time": "2019-06-13T07:58:10", "url": "https://files.pythonhosted.org/packages/8d/57/625dfc7cfd10d15027fc55535590fdbece96ac375d63698888fd936c5e06/anthunder-0.6.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d759c595cd2824ae98b22ecb1acab00d", "sha256": "383b921eaa0aa92b5bcd27f99d4d808497695b68e8537f7e07a95ca3cd241b9e" }, "downloads": -1, "filename": "anthunder-0.6.2.tar.gz", "has_sig": false, "md5_digest": "d759c595cd2824ae98b22ecb1acab00d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33418, "upload_time": "2019-06-13T07:57:56", "url": "https://files.pythonhosted.org/packages/62/49/0cdf14037f7b302e2835ff7867f442fe1141c811ecf78730400a2950c4fb/anthunder-0.6.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "05f717282210e153fef6a1cc7c7a6abb", "sha256": "e414ddb6d95593a49685174698d4b96b40303377bf2f4147ea3ae0fca74e01a5" }, "downloads": -1, "filename": "anthunder-0.6.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "05f717282210e153fef6a1cc7c7a6abb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 61820, "upload_time": "2019-06-13T07:58:10", "url": "https://files.pythonhosted.org/packages/8d/57/625dfc7cfd10d15027fc55535590fdbece96ac375d63698888fd936c5e06/anthunder-0.6.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d759c595cd2824ae98b22ecb1acab00d", "sha256": "383b921eaa0aa92b5bcd27f99d4d808497695b68e8537f7e07a95ca3cd241b9e" }, "downloads": -1, "filename": "anthunder-0.6.2.tar.gz", "has_sig": false, "md5_digest": "d759c595cd2824ae98b22ecb1acab00d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33418, "upload_time": "2019-06-13T07:57:56", "url": "https://files.pythonhosted.org/packages/62/49/0cdf14037f7b302e2835ff7867f442fe1141c811ecf78730400a2950c4fb/anthunder-0.6.2.tar.gz" } ] }