teardown_request()如何与Python-Flask一起使用?

时间:2015-05-29 04:22:25

标签: python flask flask-sqlalchemy

我收到内部错误消息:

"TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30"

在线搜索给了teardown_request()解决方案:

@app.teardown_request
def checkin_db(exc):
    try:
        print "Removing db session."
        db.session.remove()
    except AttributeError:
        pass

现在超时错误消失了。但我完全不理解teardown_request,看起来每次请求后都会调用db.session.remove()吗?还是每个错误?使用此代码是否安全?

1 个答案:

答案 0 :(得分:5)

teardown_request在每个请求结束时注册要调用的函数,无论它是成功还是引发了异常。它是清理请求范围对象(如数据库会话/事务)的好地方。这就是你的代码样本所做的一切。

使用该代码是安全的,{<1>}将在每个请求后调用(即使请求期间发生异常)

有关详细信息,请参阅Flask Callbacks and ErrorsFlask.teardown_request