JobQueue: Simpler API for adding jobs #484
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
A version of #482 with less bullshit.
New API for adding jobs
Noam (and I) thought of a new, simpler API for the
JobQueueto add new jobs, with the goal to replace the current paradigm of creatingJobinstances and usingJobQueue.putto add them to the job queue. For now, there are three new methods in theJobQueueclass:JobQueue.run_once(self, callback, when, context=None, name=None)JobQueue.run_repeating(self, callback, interval, first=None, context=None, name=None)JobQueue.run_daily(self, callback, time, days=Days.EVERY_DAY, context=None, name=None)Each of them creates a
Jobinstance and uses theJobQueue.putmethod internally, but they hide the unimportant things from the user. The newJobis also returned from the method.The "old" way of using
Jobinstances andJobQueue.putyourself still works and should be 100% backwards compatible.JobQueue.putThe
JobQueue.putmethod has been extended to accept absolute times asdatetime.datetimeanddatetime.time.If you pass a
datetime.timeobject fornext_tand it's already later than the specified time (eg it's 10:00 andnext_tistime(8, 30)), the job will execute the next day.I made the
intervalparameter forJoboptional, so you can just leave it for non-repeating jobs (however, you must explicitly passrepeat=False)