{ "info": { "author": "Gaojian", "author_email": "olivetree123@163.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# Laka\n[![Build Status](https://travis-ci.org/olivetree123/Laka.svg?branch=master)](https://travis-ci.org/olivetree123/Laka) [![codecov](https://codecov.io/gh/olivetree123/Laka/branch/master/graph/badge.svg)](https://codecov.io/gh/olivetree123/Laka) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/27a69db7d26b4642b77f292711c35022)](https://www.codacy.com/manual/olivetree123/Laka?utm_source=github.com&utm_medium=referral&utm_content=olivetree123/Laka&utm_campaign=Badge_Grade) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/laka) ![PyPI](https://img.shields.io/pypi/v/laka?color=blue) ![PyPI - License](https://img.shields.io/pypi/l/laka) \n\nLaka is a microservice framework for Python, based on json and redis.\n\n## Install\n``` shell\npip install laka\n```\n\n## Tutorial\n\nServer \u7aef:\n``` python\nimport sys\nimport logging\nfrom laka import LakaServer, Param, Handler, HandlerFailed, HandlerOK\nfrom laka.errors import ValidateError, HandlerNotFound, InvalidHandler, \\\n InvalidMessage, MakeCommandError, MakeResponseError, MakeHandlerResponseError\n\n\n# \u5b9a\u4e49\u547d\u4ee4\nCOMMAND_CREATE_USER = 101\n\n# \u8fd4\u56de\u7801\u5b9a\u4e49\nSUCCESS = 0 # \u6210\u529f\nCOMMAND_NOT_FOUND = 1 # \u672a\u627e\u5230\u547d\u4ee4\nVALIDATE_PARAM_FAILED = 10 # \u53c2\u6570\u9519\u8bef\nINTERNAL_SERVER_ERROR = 500 # \u670d\u52a1\u5668\u5185\u90e8\u9519\u8bef\n\n# \u8fd4\u56de\u7801\u5bf9\u5e94\u7684\u63d0\u793a\u4fe1\u606f\nRESPONSE_MESSAGE = {\n SUCCESS: \"\",\n COMMAND_NOT_FOUND: \"Command not found.\",\n VALIDATE_PARAM_FAILED: \"Failed to validate params\",\n INTERNAL_SERVER_ERROR: \"Internal Server Error\",\n}\n\nHandlerOK.set_success_code(SUCCESS)\n\n\n# \u53c2\u6570\nclass CreateUserParam(Param):\n \n def __init__(self):\n self.account = None\n self.password = None\n self.tel = None\n \n def validate(self):\n \"\"\"\n \u63a5\u6536\u5230\u6d88\u606f\u4e4b\u540e\uff0c\u4f1a\u81ea\u52a8\u8c03\u7528 validate \u9a8c\u8bc1\u53c2\u6570\u662f\u5426\u5408\u6cd5\n \"\"\"\n if not (self.account and self.password):\n return False\n return True\n\n\n# handler\uff0c\u7528\u6765\u5904\u7406\u8bf7\u6c42\nclass CreateUserHandler(Handler):\n Param = CreateUserParam\n\n def handle(self):\n user = {\"password\":self.param.password, \"account\":self.param.account}\n return HandlerOK(user)\n \n\nif __name__ == \"__main__\":\n laka_server = LakaServer(\n service_name=\"lakaTest\",\n redis_host=\"localhost\", \n redis_port=6379, \n redis_queue=\"laka_request\", \n consul_host=\"localhost\",\n consul_port=8500,\n response_message=RESPONSE_MESSAGE,\n )\n try:\n laka_server.router(COMMAND_CREATE_USER, CreateUserHandler)\n except InvalidHandler as e:\n logging.error(e)\n sys.exit(1)\n try:\n for cmd in laka_server.accept_request():\n try:\n print(\"cmd = \", cmd.json())\n handler_response = laka_server.handle(cmd)\n except ValidateError as e:\n logging.error(e)\n handler_response = HandlerFailed(VALIDATE_PARAM_FAILED)\n except MakeHandlerResponseError as e:\n logging.error(e)\n handler_response = HandlerFailed(INTERNAL_SERVER_ERROR)\n except HandlerNotFound as e:\n logging.error(e)\n handler_response = HandlerFailed(COMMAND_NOT_FOUND)\n try:\n laka_server.response(cmd.request_id, handler_response)\n except MakeResponseError as e:\n logging.error(e)\n break\n except MakeCommandError as e:\n logging.error(e)\n except InvalidMessage as e:\n logging.error(e)\n```\n\n\nClient \u7aef:\n``` python\nimport sys\nfrom laka import LakaClient, Param\nfrom laka.errors import MakeResponseError, MakeRequestError, MakeCommandError\n\n\nCOMMAND_CREATE_USER = 101\n\n\nclass CreateUserParam(Param):\n \n def __init__(self, account, password, tel=None):\n self.account = account\n self.password = password\n self.tel = tel\n \n def validate(self):\n \"\"\"\n \u53d1\u9001\u8bf7\u6c42\u4e4b\u524d\uff0cvalidate \u4f1a\u88ab\u81ea\u52a8\u8c03\u7528\n \"\"\"\n if not (self.account and self.password):\n return False\n return True\n\n\nif __name__ == \"__main__\":\n laka_client = LakaClient(\n service_name=\"lakaTest\",\n consul_host=\"localhost\",\n consul_port=8500,\n )\n param = CreateUserParam(\"olivetree123\", \"123456\")\n try:\n request_id = laka_client.request(COMMAND_CREATE_USER, param)\n except MakeCommandError as e:\n print(e)\n sys.exit(1)\n except MakeRequestError as e:\n print(e)\n sys.exit(1)\n try:\n response = laka_client.accept_response(request_id)\n except MakeResponseError as e:\n print(e)\n sys.exit(1)\n print(\"response = \", response.json())\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/olivetree123/Laka", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "Laka", "package_url": "https://pypi.org/project/Laka/", "platform": "", "project_url": "https://pypi.org/project/Laka/", "project_urls": { "Homepage": "https://github.com/olivetree123/Laka" }, "release_url": "https://pypi.org/project/Laka/0.2/", "requires_dist": null, "requires_python": "", "summary": "Micro Service Framework for Python", "version": "0.2" }, "last_serial": 5982701, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "8ff772ff8b22ed72778ef7add528509b", "sha256": "18a7c844d326f3268bbfaf6ee43386f01477644e95d5915f762776b6ffc1ca0c" }, "downloads": -1, "filename": "Laka-0.1.tar.gz", "has_sig": false, "md5_digest": "8ff772ff8b22ed72778ef7add528509b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4887, "upload_time": "2019-10-14T03:39:30", "url": "https://files.pythonhosted.org/packages/78/e2/1731a14388ccbd76c94032749dd424255ae87fc3d3820bfc93e3ba96c3b1/Laka-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "243da7829c39aabda179d7dc4d0c4750", "sha256": "5263b58d8f4f0d903a7dfd01fcb4dabcf8e1f0c2ea539a03d1f089746c79b2a2" }, "downloads": -1, "filename": "Laka-0.1.1.tar.gz", "has_sig": false, "md5_digest": "243da7829c39aabda179d7dc4d0c4750", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4934, "upload_time": "2019-10-14T04:10:23", "url": "https://files.pythonhosted.org/packages/cb/97/2538cdc194c161348596e58d4490975ad089504873b37f147d4df804da0a/Laka-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "35e2e604c2903f0ce2e9e72eb22fc349", "sha256": "409763e72a8197f56ec3e87fb2874d1cd32f5ada44f0364d8c37f4085a30d4eb" }, "downloads": -1, "filename": "Laka-0.1.2.tar.gz", "has_sig": false, "md5_digest": "35e2e604c2903f0ce2e9e72eb22fc349", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4930, "upload_time": "2019-10-14T07:25:14", "url": "https://files.pythonhosted.org/packages/ec/5e/7b1c3dec1bdba23bac35a53f4d09594ff2cb8c900561ceae6839addda918/Laka-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "8539704e14c6b25306f4df63325aac03", "sha256": "6aa3e97c6649e75873362f61e5bd4f66243743592e9a4f2855797d3fa7327a4e" }, "downloads": -1, "filename": "Laka-0.1.3.tar.gz", "has_sig": false, "md5_digest": "8539704e14c6b25306f4df63325aac03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5532, "upload_time": "2019-10-14T12:37:50", "url": "https://files.pythonhosted.org/packages/9b/c1/a84f9f0bb7e97a791239e33b9644bf7424f1a326da827cc4bb7ec97eecd6/Laka-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "c20b6ee7170646c333dd754cd6715fa0", "sha256": "e6670a5a532bf5531b09b934150cae24c0e89db17e0cc8a88818d48ab6d94bdd" }, "downloads": -1, "filename": "Laka-0.1.4.tar.gz", "has_sig": false, "md5_digest": "c20b6ee7170646c333dd754cd6715fa0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6005, "upload_time": "2019-10-14T14:07:44", "url": "https://files.pythonhosted.org/packages/44/c9/b090558d9b5609c146bc29476f9eb3dee143394f0a59c55c3be43cef0e95/Laka-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "dc4d2727cb855d66e16c206f7d64fa9e", "sha256": "239c5a731aed22a6280a63632b37592a520ee81c0689c19b792c98df323a43f8" }, "downloads": -1, "filename": "Laka-0.1.5.tar.gz", "has_sig": false, "md5_digest": "dc4d2727cb855d66e16c206f7d64fa9e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6286, "upload_time": "2019-10-15T12:29:39", "url": "https://files.pythonhosted.org/packages/18/cc/92c31b9a1746947323e1054419abc9f5ced1147c6586465a29ed2d165dac/Laka-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "b0bbb0611d394c901fcc55e402f07954", "sha256": "818df431a37c7c49dbe0ceaccf10c3da69b47f3b97e1ec70c95aebda78f43c40" }, "downloads": -1, "filename": "Laka-0.1.6.tar.gz", "has_sig": false, "md5_digest": "b0bbb0611d394c901fcc55e402f07954", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6291, "upload_time": "2019-10-15T12:44:22", "url": "https://files.pythonhosted.org/packages/b4/ec/cc40e39506dd48fe28447a0f2ab0ab0d2315fdc4c8c3478f6d42063464d2/Laka-0.1.6.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "7f2d52900d68f527857102a706167756", "sha256": "117a8ce54edb039fd5b5480c993644fb6176da77639f6dd6dc16c306c3208292" }, "downloads": -1, "filename": "Laka-0.2.tar.gz", "has_sig": false, "md5_digest": "7f2d52900d68f527857102a706167756", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7446, "upload_time": "2019-10-16T11:36:32", "url": "https://files.pythonhosted.org/packages/e5/20/15a103af5044d1b6bc49da7abba6c4c704f38b3543391c9995565eeb2a41/Laka-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7f2d52900d68f527857102a706167756", "sha256": "117a8ce54edb039fd5b5480c993644fb6176da77639f6dd6dc16c306c3208292" }, "downloads": -1, "filename": "Laka-0.2.tar.gz", "has_sig": false, "md5_digest": "7f2d52900d68f527857102a706167756", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7446, "upload_time": "2019-10-16T11:36:32", "url": "https://files.pythonhosted.org/packages/e5/20/15a103af5044d1b6bc49da7abba6c4c704f38b3543391c9995565eeb2a41/Laka-0.2.tar.gz" } ] }