首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么运行Flask dev服务器会自己运行两次?

为什么运行Flask dev服务器会自己运行两次?
EN

Stack Overflow用户
提问于 2014-08-26 18:58:15
回答 4查看 41.3K关注 0票数 137

我正在使用Flask开发一个网站,在开发过程中,我使用以下文件运行flask:

代码语言:javascript
运行
复制
#!/usr/bin/env python
from datetime import datetime
from app import app
import config

if __name__ == '__main__':
    print('################### Restarting @', datetime.utcnow(), '###################')
    app.run(port=4004, debug=config.DEBUG, host='0.0.0.0')

当我启动服务器时,或者当它因为文件被更新而自动重启时,它总是显示两次打印行:

代码语言:javascript
运行
复制
################### Restarting @ 2014-08-26 10:51:49.167062 ###################
################### Restarting @ 2014-08-26 10:51:49.607096 ###################

虽然这不是一个真正的问题(其余的工作如预期),但我只是想知道为什么它会表现成这样?有什么想法吗?

EN

回答 4

Stack Overflow用户

发布于 2017-11-12 22:49:09

如果使用的是现代的flask run命令,则不会使用app.run的任何选项。要完全禁用重载程序,请传递--no-reload

代码语言:javascript
运行
复制
FLASK_DEBUG=1 flask run --no-reload

此外,__name__ == '__main__'永远不会是真的,因为应用程序不是直接执行的。除了没有__main__块之外,使用与Martijn's answer相同的想法。

代码语言:javascript
运行
复制
if os.environ.get('WERKZEUG_RUN_MAIN') != 'true':
    # do something only once, before the reloader

if os.environ.get('WERKZEUG_RUN_MAIN') == 'true':
    # do something each reload
票数 16
EN

Stack Overflow用户

发布于 2016-12-15 02:47:36

我也遇到了同样的问题,我通过将app.debug设置为False解决了这个问题。将它设置为True会导致我的__name__ == "__main__"被调用两次。

票数 10
EN

Stack Overflow用户

发布于 2019-09-20 20:22:41

Flask应用程序自己运行两次的可能原因之一是在Heroku上配置了WEB_CONCURRENCY设置。要设置为1,您可以在控制台heroku config:set WEB_CONCURRENCY=1中编写

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25504149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档