{ "info": { "author": "Sankalp Jonna", "author_email": "sankalpjonna@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# Timeloop\nTimeloop is a service that can be used to run periodic tasks after a certain interval.\n\n![timeloop](http://66.42.57.109/timeloop.jpg)\n\nEach job runs on a separate thread and when the service is shut down, it waits till all tasks currently being executed are completed.\n\nInspired by this blog [`here`](https://www.g-loaded.eu/2016/11/24/how-to-terminate-running-python-threads-using-signals/)\n\n## Installation\n```sh\npip install timeloop\n```\n\n## Writing jobs\n```python\nimport time\n\nfrom timeloop import Timeloop\nfrom datetime import timedelta\n\ntl = Timeloop()\n\n@tl.job(interval=timedelta(seconds=2))\ndef sample_job_every_2s():\n print \"2s job current time : {}\".format(time.ctime())\n\n@tl.job(interval=timedelta(seconds=5))\ndef sample_job_every_5s():\n print \"5s job current time : {}\".format(time.ctime())\n\n\n@tl.job(interval=timedelta(seconds=10))\ndef sample_job_every_10s():\n print \"10s job current time : {}\".format(time.ctime())\n```\n\n## Start time loop in separate thread\nBy default timeloop starts in a separate thread.\n\nPlease do not forget to call ```tl.stop``` before exiting the program, Or else the jobs wont shut down gracefully.\n\n```python\ntl.start()\n\nwhile True:\n try:\n time.sleep(1)\n except KeyboardInterrupt:\n tl.stop()\n break\n```\n\n## Start time loop in main thread\nDoing this will automatically shut down the jobs gracefully when the program is killed, so no need to call ```tl.stop```\n```python\ntl.start(block=True)\n```\n\n## Author\n* **Sankalp Jonna**\n\nEmail me with any queries: [sankalpjonna@gmail.com](sankalpjonna@gmail.com).\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sankalpjonn/timeloop", "keywords": "tasks,jobs,periodic task,interval,periodic job,flask style,decorator", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "timeloop", "package_url": "https://pypi.org/project/timeloop/", "platform": "", "project_url": "https://pypi.org/project/timeloop/", "project_urls": { "Homepage": "https://github.com/sankalpjonn/timeloop" }, "release_url": "https://pypi.org/project/timeloop/1.0.2/", "requires_dist": null, "requires_python": "", "summary": "An elegant way to run period tasks.", "version": "1.0.2" }, "last_serial": 4810431, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "a0297a95ba02877946b8594ec6543d6b", "sha256": "d8b95e04f5077dd52d2dc3c856b963457c64e0396dade5cc1977d9578ae42252" }, "downloads": -1, "filename": "timeloop-1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "a0297a95ba02877946b8594ec6543d6b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 4760, "upload_time": "2018-09-18T12:14:25", "url": "https://files.pythonhosted.org/packages/2a/f9/2691c6e744ac56b4b7269e3884c2e9be71c46ced1d94c50b915ae1f3877f/timeloop-1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "54c5fa981e48a3b154aca798c80ba8b6", "sha256": "16a37f4a5be2f3bd6cbd8168f5285abe33276970cdee5ea0605cd029cc08b450" }, "downloads": -1, "filename": "timeloop-1.0.tar.gz", "has_sig": false, "md5_digest": "54c5fa981e48a3b154aca798c80ba8b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2619, "upload_time": "2018-09-18T12:14:26", "url": "https://files.pythonhosted.org/packages/de/3a/c3f99877a76465cd4413207f41bd10fd5d0cceeab81e39508f42ea21f0d7/timeloop-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "01d177a0914b4fa3e05aa05a2e99b022", "sha256": "012a2f37940c8ff1ed9a166b69f9650378e5e2518147f35134b7dfa6893dd3dd" }, "downloads": -1, "filename": "timeloop-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "01d177a0914b4fa3e05aa05a2e99b022", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5151, "upload_time": "2018-09-20T11:46:46", "url": "https://files.pythonhosted.org/packages/6f/61/a2f12a3b0553a89ed3e56d229f02802b2353b1fd3fe0589e06ab877a051d/timeloop-1.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe3fc7e866ea73ed2b55c6e16c681949", "sha256": "c38140cf6390ff9e8582b386dfcfb72da11dd22521c03f1fd0a2a99d44561747" }, "downloads": -1, "filename": "timeloop-1.0.1.tar.gz", "has_sig": false, "md5_digest": "fe3fc7e866ea73ed2b55c6e16c681949", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2864, "upload_time": "2018-09-20T11:46:47", "url": "https://files.pythonhosted.org/packages/97/9c/8526177f909e214f8b01817dde7fb8e920e23cdd998f3417199924354192/timeloop-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "a588891654e05ba9b8018dfc9b4d170f", "sha256": "70cb69eeef39968ea0e6dd68a3a3a51257d5f4aa27b177ab1b19ca86ff525946" }, "downloads": -1, "filename": "timeloop-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "a588891654e05ba9b8018dfc9b4d170f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5220, "upload_time": "2019-02-12T12:06:14", "url": "https://files.pythonhosted.org/packages/ad/e7/371d64fc6c6fce53c490fc38816a77fe8c75ff608edc0807170ff3c62bf2/timeloop-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "791704da1f2e0494aa79229d999fd8cb", "sha256": "4e716c67fe6bcadcee7ddb91e2520792426818a70f27e630cfbbbd9becc48a13" }, "downloads": -1, "filename": "timeloop-1.0.2.tar.gz", "has_sig": false, "md5_digest": "791704da1f2e0494aa79229d999fd8cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2902, "upload_time": "2019-02-12T12:06:15", "url": "https://files.pythonhosted.org/packages/6a/95/3e39ee32f15a8e9dea46bb52300611a5351964eeaa393bafb0d738e90ce0/timeloop-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a588891654e05ba9b8018dfc9b4d170f", "sha256": "70cb69eeef39968ea0e6dd68a3a3a51257d5f4aa27b177ab1b19ca86ff525946" }, "downloads": -1, "filename": "timeloop-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "a588891654e05ba9b8018dfc9b4d170f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 5220, "upload_time": "2019-02-12T12:06:14", "url": "https://files.pythonhosted.org/packages/ad/e7/371d64fc6c6fce53c490fc38816a77fe8c75ff608edc0807170ff3c62bf2/timeloop-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "791704da1f2e0494aa79229d999fd8cb", "sha256": "4e716c67fe6bcadcee7ddb91e2520792426818a70f27e630cfbbbd9becc48a13" }, "downloads": -1, "filename": "timeloop-1.0.2.tar.gz", "has_sig": false, "md5_digest": "791704da1f2e0494aa79229d999fd8cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2902, "upload_time": "2019-02-12T12:06:15", "url": "https://files.pythonhosted.org/packages/6a/95/3e39ee32f15a8e9dea46bb52300611a5351964eeaa393bafb0d738e90ce0/timeloop-1.0.2.tar.gz" } ] }