{ "info": { "author": "Michael Miller", "author_email": "mikemill@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "|Build Status| |Coverage Status|\n\nRQ Retry Scheduler\n==================\n\n`RQ Retry Scheduler `__\nextends the RQ worker class to provide functionality to enqueue jobs\nbased on time.\n\nAdditionally, it provides a worker that will automatically retry failed\njobs using a backoff scheme.\n\nUsage\n=====\n\nQueues\n------\n\nThe ``rq_retry_scheduler.Queue`` class can be used as a drop in\nreplacement for ``rq.Queue``. It provides two additional enqueuing\nmethods:\n\n- ``enqueue_at`` - Enqueue the job at the specified time. The time\n should be a ``datetime.datetime`` object with the UTC timezone.\n- ``enqueue_in`` - Enqueue the job after the specified amount of time.\n The time should be a ``datetime.timedelta`` object.\n\nAdditionally, two other methods are available ``enqueue_job_at`` and\n``enqueue_job_in`` which work like the above methods but take a\n``rq.Job`` object as the paramter.\n\nGetting list of jobs\n~~~~~~~~~~~~~~~~~~~~\n\n| ``Queue.scheduled_jobs`` is a generator that produces the jobs that\n are currently scheduled for a particular queue.\n| ``Scheduler.schedule`` returns a list of job ids and scheduled time.\n\nChecking if a job is scheduled\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou can check if a job or job id is currently scheduled. Example:\n``job in queue``\n\nUnscheduling jobs\n~~~~~~~~~~~~~~~~~\n\nYou can unschedule jobs with ``Queue.remove_job``. This removes the job\nfrom the scheduler queue but does not remove it from RQ.\n\nRepeating jobs\n~~~~~~~~~~~~~~\n\nOnce a job has been enqueued you can set it to repeat with\n``Queue.repeat`` which takes the job and a ``datetime.timedelta``\nobject. Additionally you can pass a ``max_runs`` value to limit the\nnumber of times it will repeat.\n\nIf the job is not already in the queue it will be enqueued at the given\ninterval.\n\nIn order to ensure that job results cleanup doesn\u2019t remove the job (thus\nbreaking the repetition) the job is copied into a new job. The parent\njob can be accessed via ``Job.parent`` for the repeated jobs.\n\nDue to how the jobs are put into the work queues the maximum frequency\nis controlled by the scheduler\u2019s interval.\n\nScheduler\n---------\n\nIn order to move jobs from the schedule queue into the proper RQ queue a\nscheduler needs to be ran. This can be accomplished via the\n``rqscheduler`` script. Additionally, you can extend from\n``rq_retry_scheduler.Scheduler`` to customize the functonality.\n\nWorker\n------\n\nA worker is provided that will requeue jobs that fail using a defiend\nbackoff strategy. The worker is designed to use the functionality from\nthe ``Queue`` class to control the backoff.\n\nThe worker can be used by using the ``-w`` option to ``rq worker``:\n``rq worker -w 'rq_rety_scheduler.Worker``.\n\nThe backoff times and total attempts is controlled by\n``Worker.retry_delays``.\n\nInstallation\n============\n\nInstall via pip\n\n::\n\n pip install rq-retry-scheduler\n\nAcknowledgements\n================\n\nThis package was based heavily on the work of `RQ\nScheduler `__.\n\n.. |Build Status| image:: https://travis-ci.org/mikemill/rq_retry_scheduler.svg?branch=master\n :target: https://travis-ci.org/mikemill/rq_retry_scheduler\n.. |Coverage Status| image:: https://coveralls.io/repos/github/mikemill/rq_retry_scheduler/badge.svg?branch=master\n :target: https://coveralls.io/github/mikemill/rq_retry_scheduler?branch=master\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/mikemill/rq_retry_scheduler", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rq-retry-scheduler", "package_url": "https://pypi.org/project/rq-retry-scheduler/", "platform": "any", "project_url": "https://pypi.org/project/rq-retry-scheduler/", "project_urls": { "Homepage": "https://github.com/mikemill/rq_retry_scheduler" }, "release_url": "https://pypi.org/project/rq-retry-scheduler/0.2.1/", "requires_dist": [ "rq (>=0.13)" ], "requires_python": "", "summary": "RQ Retry and Scheduler", "version": "0.2.1" }, "last_serial": 4608375, "releases": { "0.1.0a0": [ { "comment_text": "", "digests": { "md5": "5f0230862f6d68de06b536a520b86b99", "sha256": "db9bd63bc1752a35eaa934a74b2485518d728e8d87022b05e7b87516968fc784" }, "downloads": -1, "filename": "rq-retry-scheduler-0.1.0a0.tar.gz", "has_sig": false, "md5_digest": "5f0230862f6d68de06b536a520b86b99", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2749, "upload_time": "2016-09-17T23:46:08", "url": "https://files.pythonhosted.org/packages/dd/a8/2afd90b1da1c0a5159404153d29bf9ffb86b9dab2971cdda756ba50cbfcd/rq-retry-scheduler-0.1.0a0.tar.gz" } ], "0.1.0a2": [ { "comment_text": "", "digests": { "md5": "84bafa9228f88c6d23e984d470188859", "sha256": "132da2117d2efd1501cb08ebc78b2a3e7f056d352102e459308f48ebe2386710" }, "downloads": -1, "filename": "rq-retry-scheduler-0.1.0a2.tar.gz", "has_sig": false, "md5_digest": "84bafa9228f88c6d23e984d470188859", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4483, "upload_time": "2016-09-18T01:36:38", "url": "https://files.pythonhosted.org/packages/5f/5e/afd86dde601f73a47796c9edc40ff488dbbdf7292f5e4d9ca43a147be0b5/rq-retry-scheduler-0.1.0a2.tar.gz" } ], "0.1.0b1": [ { "comment_text": "", "digests": { "md5": "3c7582955f0a33b81b68aad60888eeae", "sha256": "da2514b9f8261a3c30cc103194248fe91aec8ac7d4dc39ff94dd7b6f89ae10cd" }, "downloads": -1, "filename": "rq-retry-scheduler-0.1.0b1.tar.gz", "has_sig": false, "md5_digest": "3c7582955f0a33b81b68aad60888eeae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4543, "upload_time": "2016-09-18T19:02:50", "url": "https://files.pythonhosted.org/packages/5e/72/d6d0dba09e5927a4aad157c93495e8e3254a5d34461a594e7d710ea42c3d/rq-retry-scheduler-0.1.0b1.tar.gz" } ], "0.1.0b2": [ { "comment_text": "", "digests": { "md5": "e016d08dd50fc3d36bf20822ca7dc7b8", "sha256": "0124ac8173d48a29ad22833651be6628faac8f93c6374c8625e66abf900d45c2" }, "downloads": -1, "filename": "rq-retry-scheduler-0.1.0b2.tar.gz", "has_sig": false, "md5_digest": "e016d08dd50fc3d36bf20822ca7dc7b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5558, "upload_time": "2016-09-19T04:34:18", "url": "https://files.pythonhosted.org/packages/01/6b/8d42d518d0c5c85b16560b35a39b575babb0e4bc39377bfaf0a84f991c11/rq-retry-scheduler-0.1.0b2.tar.gz" } ], "0.1.0b3": [ { "comment_text": "", "digests": { "md5": "3a7aa2dfeb4408f7be75dc96f4e38296", "sha256": "6a7f166483e53a420550ec219226d183c0c09c3c8d12b384a7d0aa2979ae3360" }, "downloads": -1, "filename": "rq-retry-scheduler-0.1.0b3.tar.gz", "has_sig": false, "md5_digest": "3a7aa2dfeb4408f7be75dc96f4e38296", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5664, "upload_time": "2016-09-20T03:43:13", "url": "https://files.pythonhosted.org/packages/66/b6/4f438c0343d3c00de9c9374a5a500f012dc811c10801c4ad4259449e88fe/rq-retry-scheduler-0.1.0b3.tar.gz" } ], "0.1.0b4": [ { "comment_text": "", "digests": { "md5": "18cc5fa056e25135892a3f1b1cc98b75", "sha256": "d79925581dd8b50c4d28cbb60085065bf1f98489e9963c52a83f22cb558dd6c6" }, "downloads": -1, "filename": "rq-retry-scheduler-0.1.0b4.tar.gz", "has_sig": false, "md5_digest": "18cc5fa056e25135892a3f1b1cc98b75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5705, "upload_time": "2016-09-20T18:29:44", "url": "https://files.pythonhosted.org/packages/e8/71/9c3d0aa84f02949a78b86941d33a3909b70d2b86e612043c6bf409599164/rq-retry-scheduler-0.1.0b4.tar.gz" } ], "0.1.0b5": [ { "comment_text": "", "digests": { "md5": "7ef0a3b832b860151dfd1b0465f6dbc6", "sha256": "aae4027ed426e0d35c7e885aa51090c6d9a457740b660ff674f262f98087376d" }, "downloads": -1, "filename": "rq-retry-scheduler-0.1.0b5.tar.gz", "has_sig": false, "md5_digest": "7ef0a3b832b860151dfd1b0465f6dbc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6965, "upload_time": "2016-09-25T17:19:11", "url": "https://files.pythonhosted.org/packages/fa/c9/9d2029ae22680f0aa14bcb25b9644fcd15d16018eb3125547dca5db80996/rq-retry-scheduler-0.1.0b5.tar.gz" } ], "0.1.0b6": [ { "comment_text": "", "digests": { "md5": "1d62134aadde1959d501cad0abd957c7", "sha256": "7b72c12dab61bda0c74ec309b1b30556d19c17b967fda7a17b287c1b8b988991" }, "downloads": -1, "filename": "rq_retry_scheduler-0.1.0b6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1d62134aadde1959d501cad0abd957c7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10098, "upload_time": "2016-09-25T18:21:50", "url": "https://files.pythonhosted.org/packages/02/7e/d599e4fc90180850ba5f17aaf1a90fc3a525ed48c7965f5cc688a15e64ae/rq_retry_scheduler-0.1.0b6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb73fdacb2fdd424ce0637c0b20e2e9e", "sha256": "376d8e77576b7bd272c882aeb44bfeb251373bb2c88fd564ab62a09d14961e2d" }, "downloads": -1, "filename": "rq-retry-scheduler-0.1.0b6.tar.gz", "has_sig": false, "md5_digest": "eb73fdacb2fdd424ce0637c0b20e2e9e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7016, "upload_time": "2016-09-25T18:21:52", "url": "https://files.pythonhosted.org/packages/19/cd/b89fdb15af5779f238d4ae7a678291ed7e45bf0b98fd138c169d72188b29/rq-retry-scheduler-0.1.0b6.tar.gz" } ], "0.1.1b1": [ { "comment_text": "", "digests": { "md5": "6bbe5bae285a5d79496c76d85c0ce2b4", "sha256": "abe236ef33c1f631c529e23fde42ccd06c2f9df35ff9594b4b41a363743f3d82" }, "downloads": -1, "filename": "rq_retry_scheduler-0.1.1b1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6bbe5bae285a5d79496c76d85c0ce2b4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10461, "upload_time": "2017-07-30T15:39:32", "url": "https://files.pythonhosted.org/packages/cd/60/8dc1cd9ef8fe570e14721b84b58d8c5823ad5c116e01aa26e6d0e18340c4/rq_retry_scheduler-0.1.1b1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28e223f389f5612a938bbfd339567771", "sha256": "eb69f51a598ccba326853887e5bf218593cde451203ea7fe05457aaf54aad758" }, "downloads": -1, "filename": "rq-retry-scheduler-0.1.1b1.tar.gz", "has_sig": false, "md5_digest": "28e223f389f5612a938bbfd339567771", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7355, "upload_time": "2017-07-30T15:39:34", "url": "https://files.pythonhosted.org/packages/ed/d1/d13089f43047d8f719672b2fdc9e74c99cc04cecd83a9293a14faf4532cc/rq-retry-scheduler-0.1.1b1.tar.gz" } ], "0.1.1b2": [ { "comment_text": "", "digests": { "md5": "769b5ab3d838149f2ab41c10f9897bfe", "sha256": "8bf707a51c2506f87e123b5cef09d352c9af5f94f4b8e2f78adeb66aa7158bec" }, "downloads": -1, "filename": "rq_retry_scheduler-0.1.1b2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "769b5ab3d838149f2ab41c10f9897bfe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10755, "upload_time": "2017-07-31T03:53:21", "url": "https://files.pythonhosted.org/packages/fa/a1/6abfea5f3ceccd5e37dad730d870ca986510173669b2c42aef6ab86b40ee/rq_retry_scheduler-0.1.1b2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1db1ed8ff9e204a1ca08ce296c3de569", "sha256": "f0cad7657363ff8d976da9a62af983828274802cb01719a189343e4181de8908" }, "downloads": -1, "filename": "rq-retry-scheduler-0.1.1b2.tar.gz", "has_sig": false, "md5_digest": "1db1ed8ff9e204a1ca08ce296c3de569", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8323, "upload_time": "2017-07-31T03:53:23", "url": "https://files.pythonhosted.org/packages/e2/0e/82ce14db6a96b255de6056910a124a6aa272ba85dd41e4247f1c9f95f6ef/rq-retry-scheduler-0.1.1b2.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "0f9941b0cb17f24dab5f3e3369d24546", "sha256": "9e2170a1c8d1b65430fb81b2492b33ef93d49833f8407fe691ebc880302d6ee9" }, "downloads": -1, "filename": "rq_retry_scheduler-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0f9941b0cb17f24dab5f3e3369d24546", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11008, "upload_time": "2017-08-16T15:23:45", "url": "https://files.pythonhosted.org/packages/16/b6/79e7368256adb9b96220da813261b8244c5d0bb9778d6692cfded934e646/rq_retry_scheduler-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50df0284e69b5bb79fc2fc0501919bb7", "sha256": "fbf926a418cbc9f168e69d87c360807e254c158282bc50f1db918a4c16f2d2b8" }, "downloads": -1, "filename": "rq-retry-scheduler-0.1.2.tar.gz", "has_sig": false, "md5_digest": "50df0284e69b5bb79fc2fc0501919bb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8582, "upload_time": "2017-08-16T15:23:47", "url": "https://files.pythonhosted.org/packages/65/56/67f4d09aa9c029428735c3aec3d2961812ea49ac28bd585131c30b30bcc5/rq-retry-scheduler-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "ca75c3a887e3654b647179e998698016", "sha256": "f171831eef1fbfae9c0c4d455005ec3a71baccc8df3ee3e4a393558eb57dddf9" }, "downloads": -1, "filename": "rq_retry_scheduler-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ca75c3a887e3654b647179e998698016", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8295, "upload_time": "2018-12-17T14:56:09", "url": "https://files.pythonhosted.org/packages/26/2c/73a94ba80e984b916534afce60493b67557cfdeb3a981ed9cac0d460ca32/rq_retry_scheduler-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b7cb849dbd7fd9c0b0c92a0f6e2a6f0", "sha256": "25d1e183ce9a3818fd9083978b8e5c5e99a15eb918d6bd8438b21c07df071c02" }, "downloads": -1, "filename": "rq-retry-scheduler-0.2.0.tar.gz", "has_sig": false, "md5_digest": "5b7cb849dbd7fd9c0b0c92a0f6e2a6f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7269, "upload_time": "2018-12-17T14:56:11", "url": "https://files.pythonhosted.org/packages/cb/99/f90afa051fbda11ba02b06273d20b33da51aa9966e935add407ac446eb13/rq-retry-scheduler-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "3aecefacb11e8691e3b4e46ccbd3a8fb", "sha256": "52241bcc52de8d3b00112bcd069174389fc68ed03f3eb357d7cf664a15e4cccc" }, "downloads": -1, "filename": "rq_retry_scheduler-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3aecefacb11e8691e3b4e46ccbd3a8fb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9594, "upload_time": "2018-12-17T15:10:46", "url": "https://files.pythonhosted.org/packages/27/31/e444ff416f862bcb57d7d0619eab03b9beae594dc448b35ceb98494a2aa4/rq_retry_scheduler-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5532a757eb98de7d48f5f70c1912dfe5", "sha256": "7f2c654a7e523e87cc497bec7d79f64df2b71568db8eb223f6c075c5e7f0a0da" }, "downloads": -1, "filename": "rq-retry-scheduler-0.2.1.tar.gz", "has_sig": false, "md5_digest": "5532a757eb98de7d48f5f70c1912dfe5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7835, "upload_time": "2018-12-17T15:10:48", "url": "https://files.pythonhosted.org/packages/67/c1/242fb4118472e61fe67ba064fa7d49f5a4b60fe39c020022009a8b401704/rq-retry-scheduler-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3aecefacb11e8691e3b4e46ccbd3a8fb", "sha256": "52241bcc52de8d3b00112bcd069174389fc68ed03f3eb357d7cf664a15e4cccc" }, "downloads": -1, "filename": "rq_retry_scheduler-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3aecefacb11e8691e3b4e46ccbd3a8fb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9594, "upload_time": "2018-12-17T15:10:46", "url": "https://files.pythonhosted.org/packages/27/31/e444ff416f862bcb57d7d0619eab03b9beae594dc448b35ceb98494a2aa4/rq_retry_scheduler-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5532a757eb98de7d48f5f70c1912dfe5", "sha256": "7f2c654a7e523e87cc497bec7d79f64df2b71568db8eb223f6c075c5e7f0a0da" }, "downloads": -1, "filename": "rq-retry-scheduler-0.2.1.tar.gz", "has_sig": false, "md5_digest": "5532a757eb98de7d48f5f70c1912dfe5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7835, "upload_time": "2018-12-17T15:10:48", "url": "https://files.pythonhosted.org/packages/67/c1/242fb4118472e61fe67ba064fa7d49f5a4b60fe39c020022009a8b401704/rq-retry-scheduler-0.2.1.tar.gz" } ] }