小编典典

在Python 3中安排重复事件

python

我正在尝试安排一个重复事件在Python 3中每分钟运行一次。

我看过课堂,sched.scheduler但是我想知道是否还有另一种方法可以做到。我听说有人提到我可以为此使用多个线程,我不介意这样做。

我基本上是在请求一些JSON,然后解析它。它的价值会随着时间而变化。

要使用它,sched.scheduler我必须创建一个循环以请求它安排偶数运行一小时:

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()

还有什么其他方法可以做到这一点?


阅读 195

收藏
2020-12-20

共1个答案

小编典典

您可以使用threading.Timer,但是它也可以安排一次性事件,类似于.enter调度程序对象的方法。

将一次性调度程序转换为周期性调度程序的正常模式(使用任何语言)是使每个事件以指定的时间间隔重新进行调度。例如,使用时sched,我不会像您正在使用的那样使用循环,而是像这样:

def periodic(scheduler, interval, action, actionargs=()):
    scheduler.enter(interval, 1, periodic,
                    (scheduler, interval, action, actionargs))
    action(*actionargs)

并通过电话发起整个“永久定期计划”

periodic(scheduler, 3600, query_rate_limit)

或者,我可以使用threading.Timer代替scheduler.enter,但是模式非常相似。

如果您需要更精细的变体(例如,在给定时间或在某些条件下停止定期重新计划),那么添加一些额外的参数就不太难了。

2020-12-20