Я пытаюсь отлаживать удаленные вызовы процедур для компонентов Python на основе WAMP (Web Application Messaging Protocol). Например:Запуск WAMP worker Trace Back Error
Передняя часть (браузер)
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
...
Это стандартный способ справиться с этим?
Спасибо, но, к сожалению, не похоже, что это будет работать. Когда я включаю вышеуказанный код, он не вызывает функцию onJoin, поэтому не может выполнять процедуры. – Eddie
Быстрое исправление, я просто явно передал сам объект в качестве первого аргумента, и он работает. Я имею в виду вместо 'ApplicationSession .__ init __ (config)' Я вызывал 'ApplicationSession .__ init __ (self, config)'. Я рад, что теперь он работает как магия. – Eddie
О, хорошо поймать. Да, нужно вызвать 'self' при вызове конструктора базового класса. Я исправил ответ. Сожалею. – oberstet