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
JobQueue
to add new jobs, with the goal to replace the current paradigm of creatingJob
instances and usingJobQueue.put
to add them to the job queue. For now, there are three new methods in theJobQueue
class: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
Job
instance and uses theJobQueue.put
method internally, but they hide the unimportant things from the user. The newJob
is also returned from the method.The "old" way of using
Job
instances andJobQueue.put
yourself still works and should be 100% backwards compatible.JobQueue.put
The
JobQueue.put
method has been extended to accept absolute times asdatetime.datetime
anddatetime.time
.If you pass a
datetime.time
object fornext_t
and it's already later than the specified time (eg it's 10:00 andnext_t
istime(8, 30)
), the job will execute the next day.I made the
interval
parameter forJob
optional, so you can just leave it for non-repeating jobs (however, you must explicitly passrepeat=False
)