繁体   English   中英

在生产模式下在 Flask 中启用调试模式

[英]Enable debug mode in Flask in production mode

在瓶子中,我需要做的就是启用调试模式:

from bottle import debug

application = Bottle()
app = application
debug(True)

我如何在 Flask 框架中做同样的事情?

要启用调试模式,我会将以下代码添加到 Flask 应用程序中:

app.config['ENV'] = 'development'
app.config['DEBUG'] = True
app.config['TESTING'] = True

我还建议为环境和调试设置环境变量。

$ export FLASK_ENV=development 
$ export FLASK_DEBUG=1

如果您在开发环境中; 你可以简单地在你指定它Flask.run作为指定在这里

例子:

app.run(host='0.0.0.0', port='8080', debug=True)

您也可以采用另一种方法在修改default_config如图所示这里

例子:

app.config['DEBUG'] = True
app.run(host='0.0.0.0', port='8080')

甚至导出FLASK_DEBUG=1 - 请记住, FLASK_DEBUG会覆盖FLASK_ENV=development

正如您在下面看到的,Flask 表示以下内容:

在生产中部署时不要启用调试模式。

尽管正如您所说,您希望在生产环境中启用调试功能; 因此为什么我不会使用Flask.run因为它打算在开发环境中使用,而且我当然不会将FLASK_ENV设置为development

我建议你重新考虑在生产中调试的概念,因为生产不是为了调试; 简单地说,我相信你想要在生产中调试的理由是错误的。

另一种可能的解决方案是使用以下(分叉,多进程):

from werkzeug.debug import DebuggedApplication  
application = DebuggedApplication(app, True)

在 Flask 1.0 版本中,您可以将环境变量设置为在运行 flask 命令时自动导入,但您需要安装python-dotenv

然后你可以在你的顶级目录中创建一个名为.flaskenv的新文件并在其中设置你的环境变量:

FLASK_APP=run.py
FLASK_DEBUG=1

如果有人在 Windows 中遇到同样的问题,请跟进Gil Sousa 的回答

在文件中的代码中添加这三行,

app.config['ENV'] = 'development'
app.config['DEBUG'] = True
app.config['TESTING'] = True

并且还在cmdanaconda prompt键入这些命令来设置调试模式,

$ set FLASK_ENV=development 
$ set FLASK_DEBUG=1

并且不要忘记在app.run()传递debug=True作为参数。

PS:如果你遵循这个答案,FYKI,现在烧瓶应用程序正在使用命令$set FLASK_APP=app.py然后$FLASK run $set FLASK_APP=app.py $FLASK run运行烧瓶应用程序。 这仅适用于 Linux 的 windows 使用export而不是set

在flask 库中,您可以使用以下步骤启用内置调试模式。

步骤 1:在您的项目文件中创建一个虚拟环境(最佳实践):

python -m venv webserver

或者,使用 python3

python3 -m venv webserver

其中 webserver 表示虚拟环境的位置,文件夹将被保存为“webserver”。

最佳做法是使用文件夹名称作为“venv”。

第 2 步:使用 Windows Powershell,导航到您的项目文件夹

cd "location of the project folder"

第三步:设置flask app变量来指定python脚本名称:

$env:FLASK_APP="server.py"

第四步:设置flask环境变量,指定环境类型为“development”,激活调试器:

$env:FLASK_ENV="development"

第五步:激活项目的虚拟环境:

venv\scripts\activate

第 6 步:运行 Flask 应用程序:

flask run

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM