我在 docker 中有这个烧瓶应用程序,调试模式设置为:
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
Run Code Online (Sandbox Code Playgroud)
当我遇到错误并单击小控制台图标时,系统会询问我输入的 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.
Run Code Online (Sandbox Code Playgroud)
到网址: http://localhost:5000/submit?&__debugger__=yes&cmd=dump()&frm=140300814179632&s=ljASKJ6S2EwWtVcN8EHR
我认为可能是正确的端口没有打开,因为它可能用于 websockets(在 webpack 中热重载),但在这里,端口似乎与 web 应用程序相同(5000)。
那么知道会出什么问题吗?
谢谢
我正在使用:
Python 3.9.5
Flask 2.0.1
Run Code Online (Sandbox Code Playgroud)
这是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
Run Code Online (Sandbox Code Playgroud)
通过使用,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
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |