记录 WAMP worker 回溯错误

Logging WAMP worker Trace Back Error

我一直在尝试调试基于 python 组件的 WAMP(Web 应用程序消息传递协议)的远程过程调用。例如:

前端(浏览器)

session.call('math.add2', [2, 'two']);

后端(python)

@wamp.register("math.add2")
def add2(self, x, y):
    return x + y

它给出了一些关于错误的想法。

对于像这样的简单示例,它根本不重要,但对于包含大量文件和模块的大型应用程序,我不太确定查明错误以便输出的最佳方法包含文件名、行号和描述的完整错误跟踪。

作为解决方案,我稍微修改了 wamp.py(添加了行 traceback.print_exc() ) 如下所示,在控制台日志中输出错误:

# autobahn/asyncio/wamp.py
...
import traceback
...

class FutureMixin:
  ...
  @staticmethod
  def _as_future(fun, *args, **kwargs):
     try:
        res = fun(*args, **kwargs)
     except Exception as e:
        traceback.print_exc() # Added this line
        ...

这是标准的处理方式吗?

AutobahnPython 允许您打开在 WAMP 错误消息中发送回溯:

class MyComponent(ApplicationSession):
   def __init__(self, config = None):
      ApplicationSession.__init__(self, config)
      self.traceback_app = True