Я пытался отлаживать вызовы удаленных процедур для компонентов python на основе WAMP (протокол обмена сообщениями веб-приложений). Например:
Интерфейс (браузер)
session.call('math.add2', [2, 'two']);
Бэкенд (питон)
@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
...
Это стандартный способ справиться с этим?