我有一个python脚本,每隔几分钟按时间戳收集数据库中的数据。
此脚本每隔几分钟从DB中的给定表中收集数据,与当前时间匹配 1分钟:
例如在' 216-04-12 14:53' 脚本将查找数据 匹配' 216-04-12 14:52' 在DB等等......
现在我希望脚本在退出之前保存从数据库收集的最后一个时间戳,以及任何类型的退出(键盘中断,系统错误,数据库故障点等)。
有没有一种简单的方法可以做我想知道我无法修改数据库
答案 0 :(得分:0)
Python atexit
module可能会对您有所帮助。您可以import atexit
def exit_handler():
print 'My application is ending!'
atexit.register(exit_handler)
并注册函数以在程序退出时运行。
见this post,即:
def main():
try:
execute_app() # Stuff that happens before program exits
finally:
handle_cleanup() # Stuff that happens when program exits
if __name__=='__main__':
main()
这将适用于大多数退出情况。
来自同一线程的另一个更强大的答案:
{{1}}
以上情况更可靠......
最可靠的方法是每分钟写一次输出,每次都覆盖以前的输出。这样,无论您的退出清理是否触发,您仍然可以在程序退出的那一刻获得您的数据。
答案 1 :(得分:0)
您可以使用模块atexit.register()
中的atexit
来注册清理功能。如果您按顺序注册函数f
,g
,h
。在程序退出时,这些将以相反的顺序执行,h
,g
,f
。
但有一点需要注意:这些函数将在普通程序退出时调用。 Normal 表示由python处理的出口。所以在奇怪的情况下不会工作。