我有一个程序需要每隔一定的时间执行。例如,我可能希望它每五分钟执行一次。我有几个与多个终端节点设备通信的协调器。下面的代码是关于协调员的。我需要它,以便如果interval设置为5,那么它将运行并记录信息,例如:9:05、9:10、9:15、9:20、9:25等等。到目前为止,我得到的代码如下:if __name__ == '__main__':
while True:
try:
r = json.read(rqst_command())
interval = r.get('intvl')
collect_time = r.get('c_time')
command = r.get('cmd')
send_stats(cmd_nodes(command, collect_time))
time.sleep(interval)
except Exception, e:
print e
print "**Top Level Exception"
pass
问题是,如果我将间隔设置为5分钟,它不会精确地每5分钟记录一次。执行时间似乎在慢慢增加。例如,上面的代码可以记录为9:05:09、9:10:19、9:15:29、9:20:41、9:25:50。程序运行所需的时间取决于节点之间通信的速度。在
有人知道我如何更改代码,使程序每5分钟执行一次吗?在
编辑/更新
我想我已经想出了解决问题的办法。我抓住电流datetime,然后检查它是否在5分钟的标记上。如果是,则记录datetime,并将其发送给send_stats函数。这样,datetime将始终是我想要的。如果它不在5分钟标记上,那么sleep一段时间,然后再次检查。我已经基本完成了代码。但是,我在运行程序时遇到了以下错误:'builtin_function_or_method' object has no attribute 'year'。在
我做错什么了?
这是我的新代码:
^{pr2}$