在崩溃期间阻止 python 的 atexit?

Zau*_*sus 2 python flask

我编写了一个 python 脚本,它使用 atexit.register() 来运行一个函数,以便在程序退出时保留字典列表。但是,当脚本由于崩溃或运行时错误而退出时,此代码也会运行。通常,这会导致数据损坏。

有没有办法在程序异常退出时阻止其运行?

编辑:为了澄清,这涉及一个使用 Flask 的程序,我试图防止数据持久性代码在因引发错误而导致的退出上运行。

cwa*_*ole 5

你不想atexit与 Flask 一起使用。您想使用Flask 信号。听起来你是专门寻找信号的request_finished

from flask import request_finished
def request_finished_handler(sender, response, **extra):
    sender.logger.debug('Request context is about to close down.  '
                        'Response: %s', response)
    # do some fancy storage stuff.

request_finished.connect(request_finished_handler, app)
Run Code Online (Sandbox Code Playgroud)

的好处request_finished是它仅在成功响应后才会触发。这意味着只要另一个信号没有错误,就应该没问题。