【发布时间】:2017-08-01 14:59:42
【问题描述】:
我正在制作一个根据流量进行调整的警报。经过一番折腾,我决定最好让程序每 15 分钟左右从 API 获取数据。但是,我注意到如果在 time.sleep() 处于活动状态时满足 while 循环条件,它不会中断,直到 time.sleep() 的整个持续时间结束。即使在 time.sleep() 满足条件时,有没有办法让它中断?提前致谢!
while datetime.datetime.now() < self.wakeuptime: #refers to alarm time
resp = requests.get(url=url, params=param)
data = json.loads(resp.content)
simplifiedtime = datetime.datetime.strptime(data["routes"][0]["legs"][0]["departure_time"]["text"], "%I:%M%p").time()
#gets suggested departure time from api
combinedsimplifiedtime=datetime.datetime.combine(today, simplifiedtime)
self.wakeuptime = combinedsimplifiedtime - datetime.timedelta(minutes=15)
#resets wakeuptime value depending on api
self.timetogo = combinedsimplifiedtime
print self.wakeuptime
time.sleep(900)
#waits 15 minutes and checks again until wakeuptime
【问题讨论】:
-
从
self.wakeuptime中减去datetime.now();如果差值小于 900 秒,则只为差值休眠。 -
嘿,感谢您的评论! @瑞安!唯一的事情是我希望它检查 15 分钟的间隔,因为差异将超过 900 秒,我希望程序每 15 分钟不断检查流量,除非满足 while 循环条件。
-
…如果差不小于900秒,休眠900秒。
-
哦!很好的解决方案!谢谢!
标签: python time while-loop alarm python-datetime