调试python app时出现Pdb错误,无服务器脱机启动

问题描述 投票:0回答:1

调试我的视图函数时遇到问题,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

Google认为问题在于无服务器进程无法从stdin读取,但我不知道如何处理这个问题。

有什么建议?

python debugging pdb serverless
1个回答
0
投票

我在这里找到了一个解决方案https://stackoverflow.com/a/26975795/4388451

  1. 创建两个fifos: mkfifo fifo_stdin mkfifo fifo_stdout

在一个终端

  1. 在同一个终端打开背景上的stdout,并写信给stdin: cat fifo_stdout&cat> fifo_stdin
  2. 在python代码中创建pdb对象,并使用它: import pdb mypdb = pdb.Pdb(stdin = open('fifo_stdin','r'),stdout = open('fifo_stdout','w')).... mypdb.set_trace()
  3. 从另一个终端中放置了fifos的文件夹中运行python代码(或者在带有python代码的文件夹的第一步中放置fifos)

现在我可以在第一个控制台中使用pdb了!

PS调试时使用--noTimeout选项很有用:sls offline --noTimeout

© www.soinside.com 2019 - 2024. All rights reserved.