在我的代码中,我有这样的功能:
def myfunc():
# Don't do anything if there's an instance already
if get_var('running') == 'true':
return
set_var('running', 'true')
# In case things go wrong
atexit.register(set_var, 'running', 'false')
do_something()
do_something_else()
set_var('running', 'false')
# Unregister handler because nothing bad happened
atexit.unregister(set_var)
set_var
设置数据库中包含的变量。
所有这些set_var
s 的目的是防止多个实例同时运行。
atexit
处理程序在程序被中断时工作正常,Ctrl-C但当它被系统或类似的东西杀死时不能。
我知道signal
但它不允许取消处理程序。
我怎么做?或者如何改变结构来实现相同的功能?