【发布时间】:2019-02-21 10:53:28
【问题描述】:
我在调试视图函数时遇到问题
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 认为问题在于无服务器进程无法从标准输入中读取,但我不知道如何处理此问题。
有什么建议吗?
【问题讨论】:
-
我通常在 REPL 会话中导入处理程序并以这种方式执行函数。你试过类似的东西吗?
-
对不起,我没听懂。我运行
sls offline star。 handler.py 由 sls 调用。你如何导入处理程序?你能给我一个提示吗? -
cd到您拥有handler.py的目录,运行python以启动交互式REPL 会话,执行import handler然后执行handler.get_results()或您需要的任何功能。 HTH -
这并不总是一个好主意,因为
get_result(event, context)函数依赖于两个变量,我们应该传递一些值。从实际的 http 请求中获取这些值而不是发明一些东西会很方便。此外,我还有更复杂的情况,函数get_result被装饰器包装,我的函数的实际参数被转换为一些类实例。所以,你的方法不符合我的需要。
标签: python debugging pdb serverless