{ "info": { "author": "Czw", "author_email": "459749926@qq.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Eloope\n\u4e8b\u4ef6\u5faa\u73af\u5f15\u64ce, \u4e3b\u8981\u529f\u80fd:\n\n 1. \u5f02\u6b65\u6267\u884c, \u89e3\u51b3io\u5bc6\u96c6\u578b\u4efb\u52a1\n 2. \u652f\u6301\u642d\u5efa\u591a\u8fdb\u7a0b, \u5206\u5e03\u5f0f\u8fd0\u884c\n 3. \u652f\u6301\u65ad\u70b9\u7eed\u722c\n 4. \u63d0\u4f9b\u65e5\u5fd7\u7cfb\u7edf\n\n\u76ee\u5f55:\n- [\u5b89\u88c5](#\u5b89\u88c5)\n- [\u4f7f\u7528](#\u4f7f\u7528)\n - [\u5355\u8fdb\u7a0b](#\u5355\u8fdb\u7a0b)\n - [\u591a\u8fdb\u7a0b](#\u591a\u8fdb\u7a0b)\n - [\u5206\u5e03\u5f0f](#\u5206\u5e03\u5f0f)\n - [\u547d\u4ee4\u5f0f](#\u547d\u4ee4\u5f0f)\n - [\u65e5\u5fd7](#\u65e5\u5fd7)\n - [setting](#setting)\n- [API](#API)\n - [Engine](#Engine)\n - [Manager](#Manager)\n- [\u4e0b\u6b21\u66f4\u65b0\u5185\u5bb9](#\u4e0b\u6b21\u66f4\u65b0\u5185\u5bb9)\n\n\n## \u5b89\u88c5\n```\npip install eloope --upgrade\n```\n\n\n## \u4f7f\u7528\n- \u9996\u884c\u5bfc\u5165 `eloope` \u6a21\u5757\n\n### \u5355\u8fdb\u7a0b\n```\nfrom eloope import engine, get_current_engine, logger\n\ndef task(code):\n logger.info(f'{get_current_engine().name} --- {code}')\n\nengine.add_tasks(fn=task, param_groups=[[code] for code in range(100)])\nengine.run()\n```\n- \u5355\u8fdb\u7a0b demo: [spider_dili.py](https://github.com/Czw96/Eloope/blob/master/demo/spider_dili.py)\n- \u901a\u8fc7 `get_current_engine` \u51fd\u6570\u83b7\u5f97\u5f53\u524d\u8fd0\u884cengine\n\n### \u591a\u8fdb\u7a0b\n#### \u5f00\u542f\u670d\u52a1\n```\nfrom eloope import run_server\n\nrun_server(load_file=None, dump_path='.', log_path=None, host='localhost', port=6991)\n```\n- load_file: \u52a0\u8f7d\u4efb\u52a1\u6587\u4ef6\n- dump_path: \u4efb\u52a1\u6587\u4ef6\u4fdd\u5b58\u8def\u5f84\n- log_path: \u65e5\u5fd7\u4fdd\u5b58\u8def\u5f84, \u4e3a `None` \u65f6\u5c06\u4e0d\u4fdd\u5b58\u65e5\u5fd7\u6587\u4ef6\n\n#### \u8fd0\u884c\u5ba2\u6237\u7aef\n```\nfrom eloope import Manager, get_current_engine, logger\n\ndef task(code):\n logger.info(f'{get_current_engine().name} --- {code}')\n\nif __name__ == '__main__':\n # Manager \u521b\u5efa\u591a\u8fdb\u7a0b\n manager = Manager(engine_names=['engine1', 'engine2'], host='localhost', port=6991)\n manager.add_tasks(fn=task, param_groups=[[code] for code in range(100)])\n manager.run()\n```\n- \u591a\u8fdb\u7a0b\u5ba2\u6237\u7aef\u9700\u8981\u5728 `if __name__ == '__main__':` \u8bed\u53e5\u4e2d\u542f\u52a8\n- \u591a\u8fdb\u7a0b demo: [multi_progress.py](https://github.com/Czw96/Eloope/blob/master/demo/multi_progress.py)\n\n### \u5206\u5e03\u5f0f\n- \u4e0e [\u591a\u8fdb\u7a0b](#\u591a\u8fdb\u7a0b) \u76f8\u540c, \u90e8\u7f72\u9879\u76ee\u6587\u4ef6, \u8fde\u63a5\u540c\u4e00\u670d\u52a1\n\n### \u547d\u4ee4\u5f0f\n```\n>>> eloope \n```\n| command | \u8bf4\u660e |\n|---------|:-----|\n| stop | \u505c\u6b62\u5411\u5ba2\u6237\u7aef\u53d1\u9001\u4efb\u52a1 |\n| start | \u5f00\u59cb\u5411\u5ba2\u6237\u7aef\u53d1\u9001\u4efb\u52a1 |\n| save | \u4fdd\u5b58\u5f53\u524d\u670d\u52a1\u5668\u4e0a\u7684\u4efb\u52a1 |\n| quit | \u5f3a\u5236\u9000\u51fa\u670d\u52a1\u548c\u6240\u6709\u5ba2\u6237\u7aef |\n| task_total | \u4efb\u52a1\u603b\u6570\u91cf |\n| task_count | \u4efb\u52a1\u5f53\u524d\u6570\u91cf |\n| start_time | \u670d\u52a1\u5f00\u59cb\u65f6\u95f4 |\n| connect | \u8fde\u63a5\u670d\u52a1 |\n\n### \u65e5\u5fd7\n```\nfrom eloope import logger\n\nlogger.info('hello world!')\nlogger.debug('hello world!')\nlogger.result('hello world!')\nlogger.warning('hello world!')\nlogger.error('hello world!')\nlogger.system('hello world!')\n```\n- \u5bfc\u5165 `eloope` \u6a21\u5757\u5c06\u4f1a\u5c4f\u853d\u6389\u5176\u4ed6\u6a21\u5757\u7684\u65e5\u5fd7\u7cfb\u7edf\n\n### setting\n```\nfrom eloope import setting\n\n# \u5ba2\u6237\u7aef\u8fd0\u884c\u4e2d\u8fde\u63a5\u5931\u8d25\u56de\u8c03\u51fd\u6570\n# \u53c2\u6570: engine(Engine \u5b9e\u4f8b), repeat_count(\u91cd\u590d\u8fde\u63a5\u6b21\u6570)\n# \u8fd4\u56de: True(\u91cd\u65b0\u8fde\u63a5), False(\u65ad\u5f00\u8fde\u63a5\u9000\u51fa\u7a0b\u5e8f)\nsetting.connection_interrupt_callback = connection_interrupt_callback\n\nsetting.send_interval = 1 # \u5ba2\u6237\u7aef\u8fde\u63a5\u670d\u52a1\u5668\u95f4\u9694\nsetting.log_path = None # \u672c\u5730\u65e5\u5fd7\u4fdd\u5b58\u8def\u5f84\n\n# \u65e5\u5fd7\u7ea7\u522b\u8fc7\u6ee4\nsetting.log_filter = ('info', 'debug', 'result', 'warning', 'error', 'system')\n```\n\n## API\n### Engine(name='engine', size=50)\n- name: \u540d\u79f0\u6807\u8bc6\n- size: \u4efb\u52a1\u6c60\u5927\u5c0f\n\n| Attribute | \u8bf4\u660e |\n|-----------|:-----|\n| name | \u540d\u79f0 |\n| is_run | \u8fd0\u884c\u72b6\u6001 |\n| task_count | \u4efb\u52a1\u6570\u91cf |\n| free_count | \u4efb\u52a1\u6c60\u5269\u4f59\u7a7a\u95f4 |\n| task_pool | \u4efb\u52a1\u6c60 |\n| run() | \u963b\u585e\u8fd0\u884c |\n| add_task(fn, *params) | \u6dfb\u52a0\u5355\u4e2a\u4efb\u52a1 |\n| add_tasks(fn, param_groups) | \u6dfb\u52a0\u591a\u4e2a\u4efb\u52a1, \u540c\u4e00\u4e2a\u51fd\u6570\u4e0d\u540c\u53c2\u6570 |\n\n### Manager(engine_names=None, host='localhost', port=6991)\n- engine_names: engine \u540d\u79f0\u6807\u8bc6\u5217\u8868 (\u6bcf\u4e00\u4e2a engine \u90fd\u4e3a\u5355\u72ec\u8fdb\u7a0b)\n- host: \u670d\u52a1\u5668\u5730\u5740\n- post: \u670d\u52a1\u5668\u7aef\u53e3\n\n| Attribute | \u8bf4\u660e |\n|-----------|:-----|\n| create_engines(engine_names, size=50) | \u521b\u5efa\u591a\u4e2a engine |\n| add_task(fn, *params) | \u6dfb\u52a0\u5355\u4e2a\u4efb\u52a1 |\n| add_tasks(fn, param_groups) | \u6dfb\u52a0\u591a\u4e2a\u4efb\u52a1, \u540c\u4e00\u4e2a\u51fd\u6570\u4e0d\u540c\u53c2\u6570 |\n| run() | \u975e\u963b\u585e\u8fd0\u884c |\n\n\n## \u4e0b\u6b21\u66f4\u65b0\u5185\u5bb9\n```\n1. \u6dfb\u52a0\u4efb\u52a1\u6267\u884c\u7684\u4f18\u5148\u7ea7.\n2. \u53ef\u4ee5\u6307\u5b9a enigne \u6267\u884c\u4efb\u52a1.\n3. \u6dfb\u52a0\u4efb\u52a1\u6267\u884c\u5931\u8d25\u81ea\u5b9a\u4e49\u56de\u8c03\u51fd\u6570.\n4. \u53ef\u4ee5\u9009\u62e9\u540c\u6b65\u6216\u5f02\u6b65 engine \u7c7b\u578b.\n5. \u91cd\u65b0\u8bbe\u8ba1\u65e5\u5fd7\u7cfb\u7edf\n6. \u6dfb\u52a0 UI \u63a7\u5236\u9762\u677f\n7. \u6dfb\u52a0\u6d4b\u8bd5\u6587\u4ef6\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/Czw96/eloope", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "eloope", "package_url": "https://pypi.org/project/eloope/", "platform": "", "project_url": "https://pypi.org/project/eloope/", "project_urls": { "Homepage": "https://github.com/Czw96/eloope" }, "release_url": "https://pypi.org/project/eloope/2019.6.8/", "requires_dist": [ "gevent", "requests", "toolset" ], "requires_python": "", "summary": "Event loop engine.", "version": "2019.6.8" }, "last_serial": 5372417, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "285a8b44487f183d2a48b2e8b45e2dd5", "sha256": "1cee0d26d4ce5a4b530355fd521b05e5987893159780589abfaf0e5679ce1507" }, "downloads": -1, "filename": "eloope-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "285a8b44487f183d2a48b2e8b45e2dd5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5541, "upload_time": "2019-01-29T13:05:14", "url": "https://files.pythonhosted.org/packages/9d/9d/96a156023c43b1b2e4dc346a656a9c71743c7baae02f252588b32ce93860/eloope-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f90a57985d9ceaec92d47b14e86a766f", "sha256": "08e64a506cfc3c7252a92a9c44d51c691b3bddc117f18c9ae59c7a002a197198" }, "downloads": -1, "filename": "eloope-1.0.tar.gz", "has_sig": false, "md5_digest": "f90a57985d9ceaec92d47b14e86a766f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3273, "upload_time": "2019-01-29T13:05:18", "url": "https://files.pythonhosted.org/packages/73/4f/8c7b6fd5ee9e4d28127f8a4d11ed0ddb4a0feb453a7ca42da77455a5b49b/eloope-1.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "ca5568b8200e7f2b0d0cc2ad41b822a7", "sha256": "ce0a999165656ef675a46cd744c4be62e6bbf198bbcffb2bb33c614e5b8b88b1" }, "downloads": -1, "filename": "eloope-1.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ca5568b8200e7f2b0d0cc2ad41b822a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7100, "upload_time": "2019-02-08T10:05:13", "url": "https://files.pythonhosted.org/packages/bb/1a/456e16e09dd3c1eb08bd9bd4621c6165b47b42aed76d6d54049259427001/eloope-1.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44e90ef7d6e8d85c2b52c55d82cbee01", "sha256": "488fa80e973f9c4592652a22a074715897e1789a43d1f5d94cc0691bc1bc3424" }, "downloads": -1, "filename": "eloope-1.3.1.tar.gz", "has_sig": false, "md5_digest": "44e90ef7d6e8d85c2b52c55d82cbee01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4931, "upload_time": "2019-02-08T10:05:15", "url": "https://files.pythonhosted.org/packages/75/6d/d3d9c0cce439f24c3cef65097185b598de9eebbcb98afb818e2499fc75b1/eloope-1.3.1.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "0f54b47f2c68e06355b0983070bcb8ac", "sha256": "d2ec3c9761b3ef69cfd7b043aedd0e7a95594b825482c6a7dad6d3fe2c10146a" }, "downloads": -1, "filename": "eloope-1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0f54b47f2c68e06355b0983070bcb8ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5892, "upload_time": "2019-02-10T08:23:43", "url": "https://files.pythonhosted.org/packages/3c/eb/b82604e94a37da7728c3727284537d190a441dbe2661c573275cfde06f64/eloope-1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6022d4359f715cf86a6d029242ac0e4e", "sha256": "ee74aaf909035914761c5eb1303eaafcb7780ff2c4508c47f8a89067bbfce650" }, "downloads": -1, "filename": "eloope-1.4.tar.gz", "has_sig": false, "md5_digest": "6022d4359f715cf86a6d029242ac0e4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4789, "upload_time": "2019-02-10T08:23:45", "url": "https://files.pythonhosted.org/packages/89/58/43dcf04689430434ba94d409f067a91374bd3d8906d8253239653eae61a5/eloope-1.4.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "8987ba0a04aea51592e190dafd62f297", "sha256": "5b06b7756da277e31b1a96656b0e8d6806739f194d36d33a49dd640244691620" }, "downloads": -1, "filename": "eloope-1.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8987ba0a04aea51592e190dafd62f297", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5926, "upload_time": "2019-02-10T08:54:11", "url": "https://files.pythonhosted.org/packages/cf/23/b906de65e97b5af94b9ad4f12bc59a727e50c883fd769b85ae240ebc00b1/eloope-1.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af07858df1424559bc65ee0e9f0d76a6", "sha256": "398ff8e203ca9c0a9f235d1cb54b9b276556b2ab3838c8c2e4dc8fb773dc7066" }, "downloads": -1, "filename": "eloope-1.4.1.tar.gz", "has_sig": false, "md5_digest": "af07858df1424559bc65ee0e9f0d76a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4879, "upload_time": "2019-02-10T08:54:13", "url": "https://files.pythonhosted.org/packages/b7/0d/e50588dfcfa181641e7285825a99e737455a958d84a2ea482e25a725ed49/eloope-1.4.1.tar.gz" } ], "2019.5.28": [ { "comment_text": "", "digests": { "md5": "da85da00bf4d0717284de5078ed8f9e9", "sha256": "76d2202d7f3cc61cf369e9f425c479810f0f256f7ed3e438242f51cd098a42f6" }, "downloads": -1, "filename": "eloope-2019.5.28-py3-none-any.whl", "has_sig": false, "md5_digest": "da85da00bf4d0717284de5078ed8f9e9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13309, "upload_time": "2019-05-28T11:50:35", "url": "https://files.pythonhosted.org/packages/02/b7/4f15f0a4196c6400c614b90442cda27974b983d1bf87424061ea386c76bc/eloope-2019.5.28-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8019f08387129ae1c9522e405277ae64", "sha256": "144f856ff769124aca6eeeaf683fa250db4e5b65a5341f101400b5a664157e15" }, "downloads": -1, "filename": "eloope-2019.5.28.tar.gz", "has_sig": false, "md5_digest": "8019f08387129ae1c9522e405277ae64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11368, "upload_time": "2019-05-28T11:50:36", "url": "https://files.pythonhosted.org/packages/b9/7c/2608ff837c53efcc5f8801db013ea0d829d692918e01fe2a1ce5fcd7b02e/eloope-2019.5.28.tar.gz" } ], "2019.6.8": [ { "comment_text": "", "digests": { "md5": "5b8478345848c809e418a82e052605b1", "sha256": "941de56b9909891825e134264066c982e20ee5c5548c39f110e631da6d8af962" }, "downloads": -1, "filename": "eloope-2019.6.8-py3-none-any.whl", "has_sig": false, "md5_digest": "5b8478345848c809e418a82e052605b1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13447, "upload_time": "2019-06-07T17:26:22", "url": "https://files.pythonhosted.org/packages/3c/48/612c93617b67cae8bcad45ecdde26601c8383b9babf82475c19655bc4883/eloope-2019.6.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "348ed411efae2a058c89e5bbf5637a10", "sha256": "7b85d7cd31fda56a1027b6a5667ad93d5f4325f6cd43f3e6d423b2165a7d786a" }, "downloads": -1, "filename": "eloope-2019.6.8.tar.gz", "has_sig": false, "md5_digest": "348ed411efae2a058c89e5bbf5637a10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11588, "upload_time": "2019-06-07T17:26:25", "url": "https://files.pythonhosted.org/packages/d7/60/9c9a529c2dc327a5b1de0f08505e3297c56773a8cf5b105d511cb41df48f/eloope-2019.6.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5b8478345848c809e418a82e052605b1", "sha256": "941de56b9909891825e134264066c982e20ee5c5548c39f110e631da6d8af962" }, "downloads": -1, "filename": "eloope-2019.6.8-py3-none-any.whl", "has_sig": false, "md5_digest": "5b8478345848c809e418a82e052605b1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13447, "upload_time": "2019-06-07T17:26:22", "url": "https://files.pythonhosted.org/packages/3c/48/612c93617b67cae8bcad45ecdde26601c8383b9babf82475c19655bc4883/eloope-2019.6.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "348ed411efae2a058c89e5bbf5637a10", "sha256": "7b85d7cd31fda56a1027b6a5667ad93d5f4325f6cd43f3e6d423b2165a7d786a" }, "downloads": -1, "filename": "eloope-2019.6.8.tar.gz", "has_sig": false, "md5_digest": "348ed411efae2a058c89e5bbf5637a10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11588, "upload_time": "2019-06-07T17:26:25", "url": "https://files.pythonhosted.org/packages/d7/60/9c9a529c2dc327a5b1de0f08505e3297c56773a8cf5b105d511cb41df48f/eloope-2019.6.8.tar.gz" } ] }