python - 使用无服务器离线启动调试 python 应用程序时出现 Pdb 错误
问题描述
我在调试视图函数时遇到问题,
import pdb; pdb.set_trace()
将其放置在其中并
> sls offline start
在控制台中启动无服务器。即,发出相应的 GET 请求,我收到以下错误:
Python: > /.../handler.py(88)get_results()
-> request_params = event.query_params
Python: (Pdb)
Python: 2019-02-20 18:37:43,648 [ERROR] | ...
Traceback (most recent call last):
...
File ".../handler.py", line 88, in get_results
...
File "/usr/lib/python3.6/bdb.py", line 51, in trace_dispatch
return self.dispatch_line(frame)
File "/usr/lib/python3.6/bdb.py", line 70, in dispatch_line
if self.quitting: raise BdbQuit
bdb.BdbQuit
谷歌建议问题在于无服务器进程无法从标准输入读取,但我不知道如何处理这个问题。
有什么建议么?
解决方案
我在这里找到了解决方案https://stackoverflow.com/a/26975795/4388451:
创建两个fifo:
mkfifo fifo_stdin mkfifo fifo_stdout
在一个终端
在后台打开的同一终端
stdout
中,并写入stdin
:猫 fifo_stdout & cat > fifo_stdin
在 python 代码中创建
pdb
对象,并使用它:导入 pdb mypdb = pdb.Pdb(stdin=open('fifo_stdin', 'r'), stdout=open('fifo_stdout', 'w')) .... mypdb.set_trace()
在另一个终端中从放置 fifos 的文件夹中运行 python 代码(或将 fifos 放在具有 python 代码的文件夹中的第一步)
现在我可以pdb
在第一个控制台中使用了!
--noTimeout
PS在调试 时使用选项很有用:sls offline --noTimeout
推荐阅读
- c# - 计算可配置小时之间的分钟数
- ios - 当用户在 iOS 应用程序中进行某些操作时如何启动 Apple Watch 应用程序
- python - 使用 mapnik 渲染道路
- python - 在 TensorFlow 中打印完整的张量值
- sql-server - Invoke-Sqlcmd 运行 SQL 脚本捕获详细输出
- python - 离线绘图和下拉小部件
- typescript - 解析发出 TypeScript?- `const a = {foo: 'bar'}` 到 `const a = {foo: 'bar', can: 'haz'}`?
- ansible - 在自定义模块中访问预定义的 ansible 模块
- python-3.x - 导入和解析 .data 文件
- javascript - 如何在我的数据库中存储元素的排序顺序并在重新排序时更新它们