如何让python脚本在退出之前做一些事情

时间:2016-04-12 15:16:32

标签: python

我有一个python脚本,每隔几分钟按时间戳收集数据库中的数据。

此脚本每隔几分钟从DB中的给定表中收集数据,与当前时间匹配 1分钟

  

例如在' 216-04-12 14:53' 脚本将查找数据   匹配' 216-04-12 14:52' 在DB等等......

现在我希望脚本在退出之前保存从数据库收集的最后一个时间戳,以及任何类型的退出(键盘中断,系统错误,数据库故障点等)。

有没有一种简单的方法可以做我想知道我无法修改数据库

2 个答案:

答案 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来注册清理功能。如果您按顺序注册函数fgh。在程序退出时,这些将以相反的顺序执行,hgf

但有一点需要注意:这些函数将在普通程序退出时调用。 Normal 表示由python处理的出口。所以在奇怪的情况下不会工作。