为什么 Flask 中的 GET 请求会被调用两次?

4

考虑这个简单的 Flask “hello world” 示例。

from flask import Flask

app = Flask(__name__)

@app.route("/inst")
def index():
    print('Hello World!')
    return "Hello World!"

if __name__ == '__main__':
    app.run(debug=True, use_reloader=False)

当我在浏览器中输入路由URL时,打印语句会执行两次。 控制台的输出如下:
* Serving Flask app "main" (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)
127.0.0.1 - - [04/Jan/2020 18:22:46] "GET /inst HTTP/1.1" 200 -
Hello World!
Hello World!
127.0.0.1 - - [04/Jan/2020 18:22:46] "GET /inst HTTP/1.1" 200 -

为什么会调用两次 GET /inst 接口?这是正常的流程吗?

你能否使用 curl 发送请求并查看是否发生了相同的事情?curl -v localhost:5000/inst - nima
1
那么很可能是浏览器的问题。尝试使用另一个浏览器或在您的浏览器上使用私人/无痕模式。 - nima
老实说,我以前没有遇到过这样的问题。也许它与某些代理配置相关,或者可能与CORS相关! - nima
@arghol 确实,如果他们在两者之间使用了两个不同的字符串会更好,但是返回值不应该在控制台中打印。从我的经验来看,双重出现只是 print 命令被执行了两次。 - roganjosh
3
也许这与您安装的一些扩展有关:https://dev59.com/4W855IYBdhLWcg3wPBpx - nima
显示剩余9条评论
1个回答

2

我的请求被触发两次的原因是由于Chrome中安装了一些扩展程序。我删除了一些扩展程序后,它可以正常工作。感谢@n1rna指出这一点。


1
这也可能是我的原因。因为它发生在我的电脑上,而其他人没有出现这种情况。 - Avi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接