我在 docker 中有这个 flask 应用程序, Debug模式设置为:
app_1 | * Serving Flask app 'my_app' (lazy loading)
app_1 | * Environment: development
app_1 | * Debug mode: on
app_1 | * Running on all addresses.
app_1 | WARNING: This is a development server. Do not use it in a production deployment.
app_1 | * Running on http://172.22.0.2:5000/ (Press CTRL+C to quit)
app_1 | * Restarting with stat
app_1 | * Debugger is active!
app_1 | * Debugger PIN: 140-110-975
当我遇到错误并单击小控制台图标时,系统会询问我输入的 PIN 码,然后得到:[console ready]
.但是,当我在控制台中输入内容时,我有:
Not Found
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
到网址:http://localhost:5000/submit?&__debugger__=yes&cmd=dump()&frm=140300814179632&s=ljASKJ6S2EwWtVcN8EHR
我认为可能是正确的端口没有打开,因为它可能用于 websockets(在 webpack 中热重载),但在这里,端口似乎与 web 应用程序相同(5000)。那么知道什么可能会出错吗?
谢谢
我正在使用:
Python 3.9.5
Flask 2.0.1
编辑
这是
docker-compose.yml
:version: "3.3"
services:
app:
build: .
command: flask run --host=0.0.0.0 --debugger
volumes:
- .:/app
working_dir: /app
ports:
- 5000:5000
env_file:
- .env
最佳答案
通过使用 DEBUG=True
你告诉 Flask 每次都重新加载服务器 main.py
变化。这样做时,它会调用 main.py
每次,杀死应用程序,然后在端口 5000
中重新启动它正在进行中。这是预期的行为。
您的问题与 docker 无关,更多是关于在 Flask 应用程序中设置 prometheus。
有一些扩展可以帮助解决这个问题,例如:
https://github.com/sbarratt/flask-prometheus或者
https://github.com/hemajv/flask-prometheus
也许这也为解决方案提供了一些线索,但请注意,这不是您在这里问的问题。
我建议首先尝试这些扩展,这意味着重构您的代码。从那里开始,如果在实现扩展时出现问题,则创建另一个问题,提供 mcve .
编辑:
在 https://www.agiratech.com/debugging-python-flask-app-in-docker-container 也有关于这个问题的文档。
关于docker - 带 docker 的 Flask 调试控制台不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68195791/