Отправка исключения на SimpleXMLRPCServer - PullRequest
0 голосов
/ 29 июля 2009

Я пытаюсь вызвать исключение на стороне сервера SimpleXMLRPCServer; однако все попытки получить исключение «Ошибка 1» на стороне клиента.

RPC_Server.AbortTest () Файл "C: \ Python25 \ lib \ xmlrpclib.py", строка 1147, в вызов вернуть себя .__ отправить (self .__ имя, аргументы) Файл "C: \ Python25 \ lib \ xmlrpclib.py", строка 1437, в __request многословен = само .__ многословным Файл "C: \ Python25 \ lib \ xmlrpclib.py", строка 1201, в запросе вернуть self._parse_response (h.getfile (), носок) Файл "C: \ Python25 \ lib \ xmlrpclib.py", строка 1340, в _parse_response return u.close () Файл "C: \ Python25 \ lib \ xmlrpclib.py", строка 787, в закрытии поднять ошибку (** self._stack [0]) xmlrpclib.Fault:: тест прерван RPC запрос ">

Ответы [ 2 ]

1 голос
/ 30 июля 2009

Да, это то, что происходит, когда вы вызываете исключение на стороне сервера. Ожидаете ли вы, что SimpleXMLRPCServer вернет исключение клиенту?

Вы можете использовать только те объекты, которые можно маршалировать через XML. Это включает

  • логическое значение: истинные и ложные константы
  • целые числа: передать напрямую
  • числа с плавающей точкой: передать напрямую
  • строк: передать непосредственно
  • массивы: любой тип последовательности Python, содержащий соответствующие элементы. Массивы возвращаются в виде списков
  • структуры: словарь Python. Ключи должны быть строками, значения могут быть любого согласованного типа. Объекты пользовательских классов могут быть переданы в; передается только их атрибут __dict__.
  • даты: в секундах с начала эпохи (передачи экземпляра класса DateTime) или экземпляра datetime.datetime.
  • двоичные данные: передать экземпляр класса Binary-оболочки
0 голосов
/ 03 октября 2013

Если вы вызываете исключение, подобное этому:

raise Exception('Help!')

на сервере элемент сообщения об исключении, которое вы получаете в клиенте, будет таким же, как выполнение str () для исходного исключения с префиксом строкового представления типа.

Результат, который я получаю для участника сообщения:

<type 'exceptions.Exception'>:Help!

Вы, конечно, можете разобрать это, чтобы получить необходимую информацию.

...