【问题标题】:Python Flask, Restarting with reloader: What does that mean [duplicate]Python Flask,使用重新加载器重新启动:这是什么意思[重复]
【发布时间】:2014-09-16 05:20:10
【问题描述】:

我正在尝试使用 Python Flask 构建第一个 Web 服务。我无法理解每次运行我的应用程序时 Flask 发出 Restarting with reloader 是什么意思。

这是我的代码。

#!venv/bin/python
from flask import Flask
from flask import request


def buildCache():
    print 'Hello World'

buildCache()

app = Flask(__name__)


@app.route('/search')
def index():
    query = request.args.get('query','', type=str);
    return  query


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

当我运行它时

venv/bin/python ./app.py
Hello World
 * Running on http://127.0.0.1:5000/
 * Restarting with reloader
Hello World

我不明白为什么 buildCache 方法被调用了两次?它似乎与“Restarting with the reoloader”有关,这是什么意思?我如何确保 buildCache 在服务器启动之前只执行一次。

【问题讨论】:

    标签: python flask


    【解决方案1】:

    这会在您进行更改时“重新加载”代码,这样您就不必手动重启应用来查看更改。当您进行频繁更改时,它非常有用。

    您可以通过将调试参数设置为 False 来关闭重新加载。

    app.run(debug=False)
    

    “[如果debug=True] 调试器将在发生未处理的异常时启动,如果检测到代码更改,集成服务器将自动重新加载应用程序。”

    来源:http://flask.pocoo.org/docs/0.10/api/#flask.Flask.debug

    【讨论】:

    • 但我没有做任何代码更改,我只是运行程序,它仍然调用我的 buildCache 函数两次,这是为什么呢?
    • 当你用reloading启动服务器时,第一次它会做两次,好像是为了测试reloading。我的猜测是这样做是为了使应用程序处于与后续重新加载后相同的状态,因此第一次运行和后续重新加载之间没有质的区别。我不知道如何禁用它。
    【解决方案2】:

    来自烧瓶文档:

    如果您启用调试支持,服务器将在代码更改时自行重新加载, 如果出现问题,它还会为您提供有用的调试器。

    this

    尝试启动应用程序,然后执行touch app.py,如果启用调试模式,服务器将重新加载应用程序。

    【讨论】:

    • 但我没有更改任何代码,我只是运行我的代码,它似乎调用了 buildCache 两次?这是为什么?任何想法
    • 只要touch文件就够了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 2020-09-01
    • 2015-01-04
    • 2017-01-07
    • 2015-06-23
    • 2017-06-30
    • 2011-10-09
    相关资源
    最近更新 更多