{ "info": { "author": "ChenXinqun", "author_email": "chenxinqun163@163.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: AsyncIO", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "conciseSchedules -- \u8fd9\u662f\u4e00\u4e2a\u7b80\u6d01\u7684\u517c\u5bb9crontab\u8bed\u6cd5\u7684\u5b9a\u65f6\u5668\u5de5\u5177\n==========================\n[![PyPI](https://img.shields.io/pypi/v/conciseSchedules.svg)](https://pypi.org/project/conciseSchedules/)\n\n## conciseSchedules \u6709\u4e24\u79cd\u5de5\u4f5c\u6a21\u5f0f:\n\u4e00\u79cd\u662f\"crontab_tasks\", \u517c\u5bb9 crontab \u8bed\u6cd5, \u53ea\u652f\u6301\u4ee5shell\u542f\u52a8\u811a\u672c\u7684\u65b9\u5f0f\u542f\u52a8\u5b9a\u65f6\u5668, \u5373subprocess.Popen\u6240\u652f\u6301\u7684\u65b9\u5f0f\u542f\u52a8. \u6700\u5c0f\u65f6\u95f4\u9897\u7c92\u5ea6\u4e3a\u5206\u949f.\n\u4e00\u79cd\u662f\"schedule_tasks\", \u65e2\u517c\u5bb9 crontab \u8bed\u6cd5, \u53c8\u652f\u6301 conciseSchedules \u8bed\u6cd5, \u53ea\u652f\u6301\u901a\u8fc7 python callable \u5bf9\u8c61\u542f\u52a8\u5b9a\u65f6\u5668, \u5373threading.Thread\u6240\u652f\u6301\u7684\u65b9\u5f0f\u542f\u52a8. \u6700\u5c0f\u65f6\u95f4\u9897\u7c92\u5ea6\u4e3a\u79d2.\n##### \u9996\u5148, \u4ecb\u7ecd\u4e00\u4e0b\"schedule_tasks\"\u5de5\u4f5c\u6a21\u5f0f, \u8981\u4f7f\u7528\u5b83\u5f88\u7b80\u5355:\nconciseSchedules { \n 'second': int or None or tuple(strat, end),\n 'minute': int or None or tuple(strat, end),\n 'hour': int or None or tuple(strat, end),\n 'day': int or None or tuple(strat, end),\n 'month': int or None or tuple(strat, end),\n 'weekday': int or None or tuple(strat, end),\n }\n1.\u4e0d\u9700\u8981\u7684\u65f6\u95f4\u9897\u7c92\u5ea6, \u53ef\u4ee5\u4e0d\u4f20, \u5373\u4e3aNone. \u81f3\u5c11\u8981\u6709\u4e00\u4e2a\u9897\u7c92\u5ea6\u4e0d\u4e3aNone. \n\u6240\u6709\u4e3aNone\u7684\u9897\u7c92\u5ea6, \u5982\u679c\u6bd4\u6709\u503c\u7684\u9897\u7c92\u5ea6\u5c0f, \u5219\u8bbe\u7f6e\u4e3a1, \u5982\u679c\u6bd4\u6709\u503c\u7684\u9897\u7c92\u5ea6\u5927, \u5219\u8bbe\u7f6e\u4e3aall.\n2.\u5982\u679c\u4f20int\u7c7b\u578b, >= 0 \u7684\u503c\u5219\u8868\u793a\u660e\u786e\u7684\u65f6\u95f4, \u5373\u7b2c\u51e0(\u79d2, \u5206, \u65f6, \u65e5, \u6708) \u6216 \u5468\u51e0, \u5176\u4e2d\u9897\u7c92\u5ea6\u4e3a\u5929\u7684\u65f6\u5019, \u4f200\u65e0\u6548. \u5982\u679c\u4f20-1, \u5219\u76f8\u5f53\u4e8ecrontab \"*/1\"\u7684\u8bed\u6cd5, \u5373\"\u6bcf1(\u79d2, \u5206, \u65f6, \u65e5, \u6708, \u5468)\", \u5176\u4e2d'weekday' 0\u8868\u793a\u661f\u671f\u65e5, 1-6\u8868\u793a\u661f\u671f\u4e00\u81f3\u661f\u671f\u516d, \u4f20-1\u7684\u8bdd, \u4f1a\u88ab\u89e3\u91ca\u4e3a\u6bcf\u5468\u542f\u52a8\u4e00\u6b21, \u4e14\u65f6\u95f4\u8bbe\u5b9a\u4e3a\u6bcf\u54681\u76841\u70b91\u5206\u542f\u52a8.\n3.\u5982\u679c\u4f20\u4e8c\u5143\u7d20\u5143\u7956, \u5219\u76f8\u5f53\u4e8ecrontab \"int-int\" \u5373\u4ece\u51e0\u81f3\u51e0.\n``` \n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n# test.py\n\n\ndef test():\n print('hello conciseSchedules!', test.__name__)\n\n\nif __name__ == '__main__':\n import conciseSchedules as scheduler\n\n tasks_conf = {\n 'schedule_tasks':[\n {'schedule':{'second': -1}, 'target': test,} # \u6bcf\u79d2\u949f\u542f\u52a8\u4e00\u6b21\n {'schedule':{'minute': -1}, 'target': test,} # \u6bcf\u5206\u949f\u542f\u52a8\u4e00\u6b21. \u9ed8\u8ba4\u662f\u6bcf\u5206\u949f\u7684\u7b2c1\u79d2.\n {'schedule':{'second': 15, 'minute': (10-20))}, 'target': test,} # \u6bcf\u5c0f\u65f6\u768410-12\u5206\u7684\u7b2c15\u79d2\u542f\u52a8\n {'schedule':{'hour': -1)}, 'target': test,} # \u6bcf\u5c0f\u65f6\u542f\u52a8\u4e00\u6b21.\u9ed8\u8ba4\u662f\u6bcf\u5c0f\u65f6\u76841\u52061\u79d2.\n {'schedule':{'minute': 1, 'hour': 10, 'day': 1, 'month': 10)}, 'target': test,} # \u6bcf\u5e7410\u67081\u65e510\u70b91\u5206\u542f\u52a8.\n ], \n }\n scheduler.set_tasks(tasks_conf)\n scheduler.run_loop()\n\n```\n\u8fd9\u6837\u5c31\u521b\u5efa\u4e86\u4e94\u4e2a\u5b9a\u65f6\u5668.\n\n#### \u4f60\u8fd8\u53ef\u4ee5\u8fd9\u6837:\n``` \n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n# test.py\n\n\ndef test():\n print('hello conciseSchedules!', test.__name__)\n\n\nif __name__ == '__main__':\n import conciseSchedules as scheduler\n\n task = {'schedule_tasks': {'schedule':{'second': -1}, 'target': test,}} # \u6bcf\u79d2\u949f\u542f\u52a8\u4e00\u6b21\n scheduler.add_task(task)\n scheduler.run_loop()\n\n``` \n\u8fd9\u6837\u52a8\u6001\u6dfb\u52a0\u5355\u4e2a\u4efb\u52a1.\n\n#### \u540c\u65f6\u4f60\u8fd8\u53ef\u4ee5\u4f7f\u7528\u88c5\u9970\u5668:\n``` \n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n# test.py\n\nimport conciseSchedules as scheduler\n\n\n@scheduler.task(schedule={'second': -1})\ndef test():\n print('hello conciseSchedules!', test.__name__)\n\n\nif __name__ == '__main__':\n scheduler.run_loop()\n\n``` \n#### \u9700\u8981\u6ce8\u610f\u7684\u662f, \u88c5\u9970\u5668, \u53ea\u652f\u6301\u72ec\u7acb\u7684 function, \u4e0d\u652f\u6301\u4efb\u4f55\u6302\u9760\u5728\u7c7b\u4e0b\u9762\u7684 method. \u5982\u679c\u6709\u9700\u8981\u7528\u5230\u7c7b\u7684\u65f6\u5019, \u8bf7\u7528 function \u5c01\u88c5\u4e00\u5c42.\n\n##### \u5982\u679c\u9700\u8981\u7ed9\u88ab\u88c5\u9970\u7684\u51fd\u6570\u4f20\u53c2, \u4f60\u53ef\u4ee5\u8fd9\u6837:\n``` \n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n# test.py\n\nimport conciseSchedules as scheduler\n\n\n@scheduler.task(schedule={'second': -1}, args=('Tony'), kwargs={'age': 18})\ndef test(name, age=None):\n print('hello conciseSchedules!', name, age)\n\n\nif __name__ == '__main__':\n scheduler.run_loop()\n\n``` \n\n#### \u5982\u679c\u4f60\u8981\u5728 \"crontab_tasks\" \u6a21\u5f0f\u4f7f\u7528 crontab \u8bed\u6cd5, \u628a\u4ee5\u4e0a\u4f8b\u5b50\u4e2d 'schedule': {} \u5173\u952e\u5b57\u6539\u6210 'crontab': '*/1 * * * * *' \u5c31\u884c\u4e86. \u8981\u6ce8\u610f 'schedule_tasks' \u5de5\u4f5c\u6a21\u5f0f\u4e0b, crontab \u652f\u6301\u79d2\u7ea7\u9897\u7c92\u5ea6, \u7b2c\u4e00\u4f4d\u662f \"\u79d2\", \u7b2c\u4e8c\u4f4d\u53ca\u4ee5\u540e\u662f \"\u5206 \u65f6 \u65e5 \u6708 \u5468\". \n\n================================= \n### \u4e0b\u9762\u662f\"crontab_tasks\"\u5de5\u4f5c\u6a21\u5f0f:\ncrontab \"\u5206 \u65f6 \u65e5 \u6708 \u5468\" \u5171\u4e94\u79cd\u9897\u7c92\u5ea6, \u7528\u7a7a\u683c\u9694\u5f00. \u652f\u6301\u8bed\u6cd5: \"*\" \u4efb\u4f55\u65f6\u95f4, \"*/3\" \u6bcf\u90223(\u80fd\u6574\u96643), \"1-10\" \u5728 1\u81f310\u4e4b\u95f4, \"1\" \u7cbe\u786e\u52301. \u4f8b\u5982: \"*/1 1 * * *\" \u5219\u8868\u793a\u6bcf\u59291\u70b9\u7684\u6bcf1\u5206\u949f\u542f\u52a8. \u5982\u679c \u5468 \u7684\u53c2\u6570\u662f \"*/1\", \u5219\u8868\u793a\u6bcf\u5468\u542f\u52a8\u4e00\u6b21, \u4e14\u542f\u52a8\u65f6\u95f4\u5728\u54681, \u5982\u679c\u662f\"*/> 1\", \u5219\u4f1a\u88ab\u89e3\u91ca\u6210\"\u80fd \u6574\u9664 \u5927\u4e8e1\u7684\u6570\u7684\u661f\u671f\u51e0\u542f\u52a8\" \u800c\u4e0d\u662f\u6bcf\u5e74\u7684\u7b2c\u51e0\u5468\u542f\u52a8. \u81f3\u4e8e\u5176\u5b83, \u8bf7\u53c2\u8003 crontab \u6587\u6863.\n``` \n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n# test.py\ndef test():\n print('hello conciseSchedules!', test.__name__)\n\n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n# start.py\n\n\nif __name__ == '__main__':\n import conciseSchedules as scheduler\n tasks_conf = {\n 'crontab_tasks':[\n {'crontab':'*/1 ', 'target': test,} # \u6bcf\u5206\u949f\u542f\u52a8\u4e00\u6b21. \u9ed8\u8ba4\u662f\u6bcf\u5206\u949f\u7684\u7b2c1\u79d2.\n {'crontab':\"\", 'target': test,} # \u6bcf\u5c0f\u65f6\u768410-12\u5206\u542f\u52a8\n {'crontab':{'hour': -1)}, 'target': test,} # \u6bcf\u5c0f\u65f6\u542f\u52a8\u4e00\u6b21.\u9ed8\u8ba4\u662f\u6bcf\u5c0f\u65f6\u76841\u52061\u79d2.\n {'crontab':{'minute': 1, 'hour': 10, 'day': 1, 'month': 10)}, 'target': test,} # \u6bcf\u5e7410\u67081\u65e510\u70b91\u5206\u542f\u52a8.\n ], \n }\n scheduler.set_tasks(tasks_conf)\n scheduler.run_loop()\n \"\"\"\u5982\u679c\u8981\u914d\u5408\u7cfb\u7edf crontab \u6765\u4f7f\u7528, \u8bf7\u4f7f\u7528 scheduler.run() \u65b9\u6cd5\"\"\"\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/chenxinqun/conciseSchedules", "keywords": "", "license": "Apache 2.0", "maintainer": "ChenXinqun ", "maintainer_email": "chenxinqun163@163.com", "name": "conciseSchedules", "package_url": "https://pypi.org/project/conciseSchedules/", "platform": "", "project_url": "https://pypi.org/project/conciseSchedules/", "project_urls": { "Homepage": "https://github.com/chenxinqun/conciseSchedules" }, "release_url": "https://pypi.org/project/conciseSchedules/1.0.3/", "requires_dist": [ "pytz", "tzlocal" ], "requires_python": ">=3.5.0", "summary": "A Concise Schedules module -- conciseSchedules for Python.", "version": "1.0.3" }, "last_serial": 5512380, "releases": { "1.0.3": [ { "comment_text": "", "digests": { "md5": "4d3b2f87a11d5ec725ffaa8963a92dcf", "sha256": "ececf03751b3a774efc8dddee697d777c00c601ee8de9fae6aecd8a1badfe0b2" }, "downloads": -1, "filename": "conciseSchedules-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4d3b2f87a11d5ec725ffaa8963a92dcf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.0", "size": 8472, "upload_time": "2019-06-28T08:31:46", "url": "https://files.pythonhosted.org/packages/66/db/1befa684d56245e5a35390db0df32db01d5b9eca835ebaa35f08fa39bb92/conciseSchedules-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36d3255f29c732310d88b41580fa42a5", "sha256": "d29bf29d89707cfe5df88f410075b6b14207c20d3011f26881b71ac3ba5ffeab" }, "downloads": -1, "filename": "conciseSchedules-1.0.3-py3.6.egg", "has_sig": false, "md5_digest": "36d3255f29c732310d88b41580fa42a5", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": ">=3.5.0", "size": 15275, "upload_time": "2019-06-28T08:31:48", "url": "https://files.pythonhosted.org/packages/c5/f5/3a580cc4df3680b2cd03cd9c0aeee999f7b360bc0c1f84f5c9165188c481/conciseSchedules-1.0.3-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "4509735f61de2e2702f0795a78a38e79", "sha256": "291345bb5a6709e7eb838e500180adf05c233004d32f4232b0dee41bfdaf463f" }, "downloads": -1, "filename": "conciseSchedules-1.0.3.tar.gz", "has_sig": false, "md5_digest": "4509735f61de2e2702f0795a78a38e79", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 8665, "upload_time": "2019-06-28T08:31:50", "url": "https://files.pythonhosted.org/packages/2d/05/911c16ac80622da3ca59321f4fe58fc3824eba51fb6d35873b75ff9a4bbc/conciseSchedules-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4d3b2f87a11d5ec725ffaa8963a92dcf", "sha256": "ececf03751b3a774efc8dddee697d777c00c601ee8de9fae6aecd8a1badfe0b2" }, "downloads": -1, "filename": "conciseSchedules-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4d3b2f87a11d5ec725ffaa8963a92dcf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.0", "size": 8472, "upload_time": "2019-06-28T08:31:46", "url": "https://files.pythonhosted.org/packages/66/db/1befa684d56245e5a35390db0df32db01d5b9eca835ebaa35f08fa39bb92/conciseSchedules-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36d3255f29c732310d88b41580fa42a5", "sha256": "d29bf29d89707cfe5df88f410075b6b14207c20d3011f26881b71ac3ba5ffeab" }, "downloads": -1, "filename": "conciseSchedules-1.0.3-py3.6.egg", "has_sig": false, "md5_digest": "36d3255f29c732310d88b41580fa42a5", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": ">=3.5.0", "size": 15275, "upload_time": "2019-06-28T08:31:48", "url": "https://files.pythonhosted.org/packages/c5/f5/3a580cc4df3680b2cd03cd9c0aeee999f7b360bc0c1f84f5c9165188c481/conciseSchedules-1.0.3-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "4509735f61de2e2702f0795a78a38e79", "sha256": "291345bb5a6709e7eb838e500180adf05c233004d32f4232b0dee41bfdaf463f" }, "downloads": -1, "filename": "conciseSchedules-1.0.3.tar.gz", "has_sig": false, "md5_digest": "4509735f61de2e2702f0795a78a38e79", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 8665, "upload_time": "2019-06-28T08:31:50", "url": "https://files.pythonhosted.org/packages/2d/05/911c16ac80622da3ca59321f4fe58fc3824eba51fb6d35873b75ff9a4bbc/conciseSchedules-1.0.3.tar.gz" } ] }