У меня была такая же проблема.Чтобы устранить эту проблему, я включил полное журналирование suds:
logging.basicConfig(level=logging.INFO)
logging.getLogger("suds.client").setLevel(logging.DEBUG)
logging.getLogger("suds.transport").setLevel(logging.DEBUG)
logging.getLogger("suds.xsd.schema").setLevel(logging.DEBUG)
logging.getLogger("suds.wsdl").setLevel(logging.DEBUG)
При выводе отладки я заметил, что ошибка произошла, когда SUDS попытался загрузить http://www.w3.org/2001/xml.xsd (эта конкретная схема была в некоторыхпуть, на который ссылалась служба, которую я пытался назвать).Оказывается, сервер w3.org очень перегружен ( ссылка , ссылка ).
SUDS Client
можно настроить на использование кэша.Я реализовал объект кеша, который возвращает содержимое двух URL-адресов w3.org, по которым работал SUDS (вы можете найти URL-адреса в выходных данных журнала).Я использовал браузер, чтобы получить две схемы и сохранить их на диск, а затем поместить содержимое в виде строковых констант внутри файла исходного кода.
from suds.cache import NoCache
from suds.sax.parser import Parser
class StaticSudsCache(NoCache):
def get(self, id):
STATIC = {"http://www.w3.org/2001/xml.xsd": XML_XSD,
"http://www.w3.org/2001/XMLSchema.xsd": XMLSCHEMA_XSD }
xml_string = STATIC.get(id.name)
if xml_string:
p = Parser()
return p.parse(string=xml_string)
from suds.client import Client
c = Client(service_url, cache=StaticSudsCache())
XML_XSD = """... contents from file ..."""
XMLSCHEMA_XSD = """... contents from file ..."""
Полный код, включая содержимое схемы XML, здесь .