zeep: использовать данные HistoryPlugin, если zeep.exceptions.Fault повышен - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть 2 основных варианта использования с zeep:

  1. Сборка клиента из WSDL в виде файла на диске, добавление новой службы с правильным URL-адресом конечной точки (у меня их много) и выполнение SOAP методы в моем коде
  2. Позвольте бизнес-логике c (многим другим субъектам) создавать свои собственные клиенты из WSDL, полученной из URL, возможно, добавьте несколько пользовательских плагинов и выполните SOAP методы

Я хотел бы использовать HistoryPlugin в обоих случаях для достижения чего-то подобного:

try:
    res = client.service.Method(args)
except zeep.exceptions.Fault as e:
    raise MyOwnException(history.last_send.envelope, history.last_received.envelope)

Так, чтобы из моего кода и во всех местах, где бизнес-логика c требовался клиент SOAP было бы возможно захватить, что именно было отправлено и получено.

В настоящее время единственный способ, которым я вижу, что это может быть сделано, - это подготовить клиента, собрать все OperationProxy из его ServiceProxy и обернуть их все моим кодом, чтобы что мои клиенты будут вызывать не client.service.Method, а custom_client.Method. И внутри этого кода проверьте исключение.

Проблема в том, что все API в ServiceProxy и OperationProxy являются частными, и я закончу с репликацией их части. Возможно, кто-нибудь знает лучший способ достичь того же или любого другого опыта здесь?

...