日期更改时执行的功能

时间:2014-09-10 20:03:56

标签: python event-handling

每次日期更改时我都需要执行一个函数。目前我正在检查循环以查看日期是否发生了变化,但我正在寻找一种更有效的方法......在Python中

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:2)

你真正想做的是安排在某个时间运行的功能。您需要使用调度机制执行此操作。当然,你可以自己写一个,但最好的方法是使用一个为你做这个的库。

APScheduler是一个非常成熟的好图书馆。

文档:http://apscheduler.readthedocs.org/en/latest/

Pypi:https://pypi.python.org/pypi/APScheduler/3.0.0

实施例

这是一个快速的小例子

from apscheduler.schedulers.background import BlockingScheduler

scheduler = BlockingScheduler()

@scheduler.scheduled_job('interval', seconds=5, timezone='UTC')
def hello():
    print('Hello!')

scheduler.start()

这将每五秒运行一次函数hello。您可以将seconds=5更改为days=1,让其每天运行一次。您可以执行很多更多配置,因此您可能希望阅读文档。它可以表达您想要的任何日期时间格式,包括cron

它还支持不同类型的调度程序,例如我选择了BlockingScheduler,因为希望整个程序作为调度机制的一个功能运行(因此您可以在自己的系统上轻松尝试)。例如,您还可以使用BackgroundScheduler,它允许您以有效的方式在程序中安排任务,而不会阻止主线程(修复您在循环中永远存在的问题)。