I’m trying to schedule a repeating event to run every minute in Python 3.
I’ve seen class sched.scheduler but I’m wondering if there’s another way to do it. I’ve heard mentions I could use multiple threads for this, which I wouldn’t mind doing.
I’m basically requesting some JSON and then parsing it; its value changes over time.
To use sched.scheduler I have to create a loop to request it to schedule the even to run for one hour:
scheduler = sched.scheduler(time.time, time.sleep)
# Schedule the event. THIS IS UGLY!
for i in range(60):
scheduler.enter(3600 * i, 1, query_rate_limit, ())
scheduler.run()
What other ways to do this are there?
You could use
threading.Timer, but that also schedules a one-off event, similarly to the.entermethod of scheduler objects.The normal pattern (in any language) to transform a one-off scheduler into a periodic scheduler is to have each event re-schedule itself at the specified interval. For example, with
sched, I would not use a loop like you’re doing, but rather something like:and initiate the whole “forever periodic schedule” with a call
Or, I could use
threading.Timerinstead ofscheduler.enter, but the pattern’s quite similar.If you need a more refined variation (e.g., stop the periodic rescheduling at a given time or upon certain conditions), that’s not too hard to accomodate with a few extra parameters.