我正在为我们的游戏社区创建一个事件通知系统。但是,我不完全确定从哪里开始。
我有一个事件及其时间的字典,例如:
{'Game Night': 19:00 2013-06-29,
'3CB vs ST3 Match': 18:45 2013-07-02,
'Website Maintainance': 13:00 2013-07-16,
etc}
使用strptime()已将时间转换为正确的日期时间格式。我现在需要的是当其中一个事件即将发生时通知用户(例如15分钟警报,然后是5分钟警报)。
例如:
"NOTICE: 3CB vs ST3 Match will begin in 15 minutes!" 10 minutes later... "NOTICE: 3CB vs ST3 Match will begin in 5 minutes!"
我的问题是: 如何让python等到事件接近(通过比较当前时间和事件的时间),然后执行一个动作(例如我的情况下的通知)?
P.S 我正在使用Python 2.7.5(由于缺少API更新)
答案 0 :(得分:0)
尝试循环,直到您的检查评估为True:
import time
interval = 0.2 # nr of seconds
while True:
stop_looping = myAlertCheck()
if stop_looping:
break
time.sleep(interval)
睡眠为您提供其他任务的CPU时间。
修改强>
好的,我不确定你的问题到底是什么。首先我想你想知道如何让python'等待'一个事件。现在,您似乎想知道如何将事件日期与当前日期进行比较。 我认为以下是一个更完整的方法。我想你可以自己填写细节吗?
import time
from datetime import datetime
interval = 3 # nr of seconds
events = {
'Game Night': '14:00 2013-06-23',
'3CB vs ST3 Match': '18:45 2013-07-02',
'Website Maintainance': '13:00 2013-07-16',
}
def myAlertCheck(events):
for title, event_date in events.iteritems():
ed = datetime.strptime(event_date, '%H:%M %Y-%m-%d')
delta_s = (datetime.now() - ed).seconds
if delta_s < (15 * 60):
print 'within 15 minutes %s starts' % title
return True
while True:
stop_looping = myAlertCheck(events)
if stop_looping:
break
time.sleep(interval)