flask中的after_request在请求完成后运行,但终端显示否则

问题描述 投票:0回答:1

代码:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "<h2> Hello, world </h2>"

@app.after_request
def after(response)
    print('after request')
    return response

if __name__ == "__main__":
    app.run(debug=True)

终端输出:

 Serving Flask app "test" (lazy loading)
 Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 Debug mode: on
 Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 Restarting with stat
 Debugger is active!
after request
127.0.0.1 - - [22/Aug/2020 14:31:07] "GET / HTTP/1.1" 200 -

我正在学习 Flask,对网络编程完全陌生。我的问题是不应该在 GET 请求之后打印“请求后”。你能指出我哪里出错了吗?我应该如何解释结果?

python flask
1个回答
0
投票

我遇到了

app.debug = False
(和
True
)的问题,并且没有任何插件。每个请求都会调用
@app.before_request
@app.after_request
修饰函数两次。请求函数本身(在您的情况下为
index()
)仅被调用一次。

@app.before_request
@app.after_request
装饰函数都与
app = Flask(__name__)
app.run(...)
和一些
app.errorhandler
装饰函数位于同一个文件中(我不知道哪一个导致了混乱)。

我将

@app.before_request
@app.after_request
装饰函数移动到另一个文件,导入该文件并且它起作用了!这两个函数现在每个请求仅调用一次

© www.soinside.com 2019 - 2024. All rights reserved.