在脱机启动无服务器的情况下调试python应用程序时发生Pdb错误
我在调试视图函数时遇到问题在脱机启动无服务器的情况下调试python应用程序时发生Pdb错误,python,debugging,pdb,serverless,Python,Debugging,Pdb,Serverless,我在调试视图函数时遇到问题 导入pdb;pdb.set_trace() 放置在其中,无服务器作为 >sls离线启动 在控制台中。 即,发出相应的GET请求时,我收到以下错误: Python: > /.../handler.py(88)get_results() -> request_params = event.query_params Python: (Pdb) Python: 2019-02-20 18:37:43,648 [ERROR] | ... Traceback
导入pdb;pdb.set_trace()
放置在其中,无服务器作为
>sls离线启动
在控制台中。
即,发出相应的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
谷歌认为问题在于无服务器进程无法读取stdin,但我不知道如何处理这个问题
有什么建议吗?我在这里找到了一个解决方案:
stdout
,然后写入stdin
:
cat fifo标准(&cat>fifo标准)pdb
对象,并使用它:
导入pdb
mypdb=pdb.pdb(stdin=open('fifo_stdin','r'),stdout=open('fifo_stdout','w'))
....
mypdb.set_trace()pdb
PS
调试时使用
--noTimeout
选项非常有用:sls offline--noTimeout
我通常在REPL会话中导入处理程序并以这种方式执行函数。你试过类似的东西吗?对不起,我不明白。我运行sls离线star
。handler.py由sls调用。如何导入处理程序?您能给我一个提示吗?cd
到您的handler.py
所在的目录,运行python
启动交互式REPL会话,执行导入handler
,然后执行handler.get_results()
或任何需要的函数。HTHIt并不总是一个好主意,因为get\u result(event,context)
函数依赖于两个变量,我们应该向它们传递一些值。从实际的http请求中获取这些值比发明一些东西更方便。此外,我还有更复杂的情况,函数get_result
被decorator包装,函数的实际参数被转换成一些类实例。所以,你的方法不适合我的需要。