python - eventlet.monkey_patch() 破坏了 docker 容器中的 ipdb

标签 python pdb eventlet ipdb nameko

所以我使用微服务Python包nameko,它使用eventlet运行服务并在导入时调用eventlet.monkey_patch()

我已经破译出正是这段代码阻止了通过ipdb进行的任何调试尝试。 ipdb 控制台显示在终端中,但我无法输入任何内容,并且必须关闭整个终端 session 才能退出该进程。

卡住的控制台看起来像: enter image description here

如何将 ipdb 与此功能一起使用?

编辑:此问题似乎仅在 Docker 容器内发生。

最佳答案

抱歉,没有方便的解决方案,目前您最好的选择是在使用 ipdb 时跳过 docker(您可以从 docker 提取文件系统镜像并在另一个虚拟化中运行它,例如 qemu、Virtualbox、systemd-nspawn)。请参阅https://github.com/larsks/undocker寻求帮助。

其他可以尝试的方法(可能不起作用,请分享结果):

  • 将 eventlet 更新到 github master pip 安装 https://github.com/eventlet/eventlet/archive/master.zip

此问题交叉发布在这里 https://github.com/eventlet/eventlet/issues/361

关于python - eventlet.monkey_patch() 破坏了 docker 容器中的 ipdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40842877/

相关文章:

python - 递归,Python,计数,倒计时

python - 如何使用带有参数化占位符的 sqlite3 Python 库创建 SQLite 表?

python - 在 Python 中计算整数列表中唯一乘法和加法对数量的有效方法是什么?

python - WTForms 创建可变数量的字段

django - 如何在Django单元测试中使用pdb.set_trace()?

python - 在 conda 环境中使用 pdb 进行调试

python - 捕获导致 SQLite 多线程访问错误的对象

python - Celery + Eventlet + 非阻塞请求

python - 阻塞执行直到条件满足

django - 将 gevent(或 eventlet)和 prefork worker 与 Celery 一起使用