Flask - 代码修改后Web服务器未重新加载

20

由于某种原因,127.0.0.1:5000(端口5000)一直显示我旧的未更新的文件。

from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "Home page"

@app.route("/about")
def about():
    return "About page"

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

我更改了端口,它可以正常工作。 但是,当我更改并运行我的代码时,为什么5000没有更新? 我检查了是否有多个进程在运行,但没有。

说实话,这是一个初学者问题,但我似乎找不到其他遇到此问题的人。


3
你在其他地方有另一个 Flask 运行着... - Antti Haapala -- Слава Україні
如果您运行以下命令,会看到什么:$ telnet localhost 5000$ ps aux | grep 5000 - JacobIRR
谢谢,但我实际上已经解决了这个问题。是的,它在某个地方运行着。我在命令中使用 statnet -a -b 命令发现 Python 仍然在监听5000端口。因此,我只需结束该任务。现在,我的问题是,如果我手动决定何时运行和结束服务器,它是如何继续保持监听状态的呢? - Bryan Hinchliffe
@BryanHinchliffe,我知道这已经很老了,但我遇到了同样的问题。你是如何解决这个问题的?我在Windows电脑和Pycharm上工作。谢谢。 - Ana
@Ana 抱歉回复晚了。我假设您现在已经解决了这个问题,但如果有帮助的话,我不得不手动杀掉运行在5000端口上的Python进程。你可以使用这个答案(选项2)来查找和终止进程。希望这能帮到你! - Bryan Hinchliffe
@BryanHinchliffe。谢谢。我通过断开计算机并停止运行所有内容来解决了这个问题。我尝试了帖子中的所有答案,但都没有起作用。 - Ana
12个回答

12

在终端中按下CTR + C来结束您的服务器,并将以下内容复制并粘贴到终端中以再次运行Flask

export FLASK_DEBUG=1 && flask run

这将开启调试模式:


2
术语“FLASK_DEBUG=1”不被识别为 cmdlet 的名称。 - Kitwradr
修复了名称无法识别的问题。 - Alexey Nikonov

8

在PowerShell中设置变量 -

$env:FLASK_DEBUG=1

7
不!你还没有在调试模式下运行您的应用程序。
app.run(debug=True)

这样一来,您的代码任何更改都会重新启动服务器,并且您的代码更改几乎实时地反映出来。

4

我不知道为什么会出现这种情况,其他答案没有帮助。希望社区能够提供帮助。

其他两个选项:

  1. 如果你正在使用Visual Studio Code,请关闭并重新打开它。

  2. 卸载并重新安装Python。


2
重启VSCode对我有用,谢谢! - Georges D
1
我遇到了同样的问题,我正在使用Sublime Text,关闭并重新打开它解决了问题,谢谢! - Chami Mohammed

3
对于仍在使用debug=True参数并正确传递给app.run()的人,但仍然遇到此问题的人,Flask(2.0.x)文档指出:

可以传递debug=True来启用调试器和重载器,但仍需要FLASK_ENV=development环境变量才能完全启用开发模式。

请参见 https://flask.palletsprojects.com/en/2.0.x/server/ 因此,在运行flask run之前,您还应该使用export FLASK_ENV=development运行开发服务器。

2

flask --app <.py file name> --debug run


1

使用Shift + F5重新加载页面。但是请确保应用程序处于调试模式,即app.run(debug=True)


0
如果您正在使用内置的 app.run(),请尝试添加 app.run(debug=True)。这将解决问题。

0
我的问题是另一个应用程序(Proton Mail Bridge)正在监听与我的Flask应用程序相同的端口(5000),但没有抛出任何错误。如果您在Windows上运行,请尝试以管理员身份打开CMD,然后运行netstat -ab命令,并查看是否有任何应用程序正在监听Flask应用程序正在运行的相同端口。
5年后我知道了这个问题,但我之前找不到任何答案。

0
一些Flask服务器不知何故冻结了。对我来说,解决方案是在任务管理器中结束pythonw.exe进程。

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