首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用Okteto和PyCharm时不会停在断点

在使用Okteto和PyCharm时不会停在断点
EN

Stack Overflow用户
提问于 2022-03-10 15:49:56
回答 1查看 634关注 0票数 1

概述

我目前正在跟踪如何在Kubernetes上开发和调试Python应用程序,以便使用Okteto调试一个简单的hello-world部署。

一切似乎都正常,但出于某种原因,调试器并没有停止在PyCharm中的断点。断点要么被忽略,要么永远不会设置。在连接到调试服务器后,我只得到一个警告:

pydev调试器:警告:试图向不存在的文件中添加断点: /Users/sfalk/workspaces/okteto-example/src/service/router.py (不会产生任何影响)

最大的区别可能是我使用的是FastAPI而不是Flask

简单的Hello服务

我有一个稍微不同的设置,但本质上我正在调试这个router.py,这与我链接的教程中的app.py (参见存储库)几乎是一样的:

代码语言:javascript
复制
import os
import socket

import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel

REMOTE_DEBUGGING = bool(os.environ.get("REMOTE_DEBUGGING", False))

app = FastAPI()


class Message(BaseModel):
    message: str


@app.get("/")
def hello_world():
    return Message(message=f"Hello {socket.gethostname()}")


if __name__ == "__main__":
    print("Starting server...")
    print(f"REMOTE_DEBUGGING: {REMOTE_DEBUGGING}")

    if REMOTE_DEBUGGING:
        import pydevd_pycharm

        print("Connecting to debugger...")
        print(f"pydevd-pycharm version: {pydevd_pycharm.VERSION_STRING}")
        pydevd_pycharm.settrace("0.0.0.0", port=9000, stdoutToServer=True, stderrToServer=True)

    uvicorn.run(
        "service.router:app",
        port=8080,
        access_log=True,
        log_level="debug",
        reload=True,
        debug=True,
    )

Okteto & Python远程调试服务器

这是我的okteto.yaml

代码语言:javascript
复制
name: depl-router
command: bash
sync:
- .:/usr/src/app
forward:
- 8080:8080
reverse:
- 9000:9000

我已经为(PRDS)设置了一个运行配置,它具有以下设置:

代码语言:javascript
复制
IDE host name: localhost
Port:          9000

在创建了Docker映像并将其部署到本地Kubernetes集群之后,我使用了本地计算机上的Desktop,我调用了okteto up,现在,您可以在下面的日志输出中看到,手动运行FastAPI服务器。这就是我们从pydev debugger那里得到警告的地方。

代码语言:javascript
复制
$ okteto up
 i  Using default @ docker-desktop as context
 ✓  Files synchronized
    Context:   docker-desktop
    Namespace: default
    Name:      depl-router
    Forward:   8080 -> 8080
    Reverse:   9000 <- 9000

root@depl-router-okteto-f49f5fc6-6gjxc:/usr/src/app# REMOTE_DEBUGGING=1 PYTHONPATH=src/. python src/service/router.py
Starting server...
REMOTE_DEBUGGING: True
Connecting to debugger...
pydevd-pycharm version: 213.6777.50
pydev debugger: warning: trying to add breakpoint to file that does not exist: /Users/sfalk/workspaces/okteto-example/src/service/router.py (will have no effect)
INFO:     Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)
INFO:     Started reloader process [232] using statreload
INFO:     Started server process [240]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

在连接之后,这就是我在PRDS中看到的:

代码语言:javascript
复制
Starting debug server at port 9,000
Use the following code to connect to the debugger:
import pydevd_pycharm
pydevd_pycharm.settrace('localhost', port=9000, stdoutToServer=True, stderrToServer=True, suspend=False)
Waiting for process connection…
Connected to pydev debugger (build 213.6777.50)
[32mINFO[0m:     Uvicorn running on [1mhttp://127.0.0.1:8080[0m (Press CTRL+C to quit)
[32mINFO[0m:     Started reloader process [[36m[1m152[0m] using [36m[1mstatreload[0m

发送HTTP请求和重新加载正在工作

好消息是,我能够发送GET请求,并且已部署的服务正在响应:

代码语言:javascript
复制
$ curl localhost:8080
{"message":"Hello depl-router-okteto-f49f5fc6-6gjxc"}

我还能够在本地修改代码,并且可以看到Okteto正在正确地交换部署/pod中修改过的文件。

断点不起作用

这里的主要问题是设置断点不起作用。这意味着在设置断点并发送GET请求之后,PyCharm IDE和PRDS根本没有响应。如果不能设置断点,我会期望得到警告,但是由于没有警告,我假设断点已经设置,或者从来没有尝试过设置。

连接到PRDS之后,PyCharm告诉我不能将远程router.py文件映射到它的本地孪生文件:

远程文件/usr/src/app/src/service/router.py映射到本地路径./src/service/router.py,无法找到。您可以继续调试,但不需要源代码。

为此,我尝试编辑RPDS配置并相应地设置映射:

这是我要将存储库复制到我的Docker映像中的目录,但是我们也可以通过查看从/usr/src/app启动的/usr/src/app服务器的run命令来确认这一点(请参阅调用okteto up后的输出)。

但是,设置路径映射没有任何效果。我可以使用自动检测选项,它正确地标识本地文件,但它不能解决问题。

EN

回答 1

Stack Overflow用户

发布于 2022-03-29 15:01:44

斯特凡,你能发布一个样本回购,复制你的问题吗?

今天,我用更新的2.0.2cli重新测试了我们的python入门指南,在今天的PyCharm专业版中,断点被击中了。

工作支路https://github.com/okteto/python-getting-started/tree/v2manifest

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

https://stackoverflow.com/questions/71427009

复制
相关文章

相似问题

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