【问题标题】:Logging WAMP worker Trace Back Error记录 WAMP 工作人员回溯错误
【发布时间】:2015-01-17 12:57:32
【问题描述】:

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

前端(浏览器)

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
        ...

这是处理它的标准方法吗?

【问题讨论】:

    标签: python debugging autobahn crossbar


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,但不幸的是,它似乎不起作用。当我包含上述代码时,它不会调用 onJoin 函数,因此无法产生过程。
    • 快速修复,我只是明确地将 self 对象作为第一个参数传递,它可以工作。我的意思是我打电话给ApplicationSession.__init__(self, config),而不是ApplicationSession.__init__(config)。我很高兴它现在像魔术一样工作。
    • 哦,很好。是的,调用基类构造函数时需要提供self。我更正了答案。对不起。
    猜你喜欢
    • 1970-01-01
    • 2014-03-28
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    相关资源
    最近更新 更多