我得到了错误:
异常:导入模式(http://www.w3.org/2001/XMLSchema) at (http://www.w3.org/2001/XMLSchema.x sd),失败
将医生(用ImportDoctor构造)传递给suds客户端构造器时。
我正在两台Windows机器上工作,它们都安装了相同版本的suds,但其中只有一台出现了上述错误。
有人能在这里引导我知道这个错误产生的原因吗?这样我就能知道机器上遗漏了什么?
提前谢谢!
UPDATE:我不知道这是否重要,但值得注意的是,我正在上升错误的机器是Amazon实例。在我的本地机器上,一切都很好!
更新:下面是我在我提到的机器的python解释器上运行的一些代码。在这里你可以详细说明错误是如何上升的..。
>>> from suds.client import Client
>>> from suds.xsd.doctor import ImportDoctor, Import
>>> missing_import = Import("http://www.w3.org/2001/XMLSchema")
>>> missing_import.filter.add("http://tempuri.org/")
>>> doctor = ImportDoctor(missing_import)
>>> client = Client("http://etcfulfill.ebooks.com/Fulfillment.asmx?wsdl")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "suds\client.py", line 112, in __init__
self.wsdl = reader.open(url)
File "suds\reader.py", line 152, in open
d = self.fn(url, self.options)
File "suds\wsdl.py", line 159, in __init__
self.build_schema()
File "suds\wsdl.py", line 220, in build_schema
self.schema = container.load(self.options)
File "suds\xsd\schema.py", line 95, in load
child.dereference()
File "suds\xsd\schema.py", line 323, in dereference
midx, deps = x.dependencies()
File "suds\xsd\sxbasic.py", line 422, in dependencies
raise TypeNotFound(self.ref)
suds.TypeNotFound: Type not found: '(schema, http://www.w3.org/2001/XMLSchema, )'
>>> client = Client("http://etcfulfill.ebooks.com/Fulfillment.asmx?wsdl", doctor=doctor)
No handlers could be found for logger "suds.xsd.sxbasic"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "suds\client.py", line 112, in __init__
self.wsdl = reader.open(url)
File "suds\reader.py", line 152, in open
d = self.fn(url, self.options)
File "suds\wsdl.py", line 159, in __init__
self.build_schema()
File "suds\wsdl.py", line 220, in build_schema
self.schema = container.load(self.options)
File "suds\xsd\schema.py", line 93, in load
child.open_imports(options)
File "suds\xsd\schema.py", line 305, in open_imports
imported = imp.open(options)
File "suds\xsd\sxbasic.py", line 542, in open
result = self.download(options)
File "suds\xsd\sxbasic.py", line 567, in download
raise Exception(msg)
Exception: imported schema (http://www.w3.org/2001/XMLSchema) at (http://www.w3.org/2001/XMLSchema.xsd), failed更新
我意识到总是在TCP增加的端口中打开连接,如果它达到最大TCP端口(65535),那么它将从可用的最小TCP端口再次打开,所以这没有问题。
使用suds ImportDoctor时会出现问题,因为它必须打开到应该检索导入的位置的先前连接,而且由于某种原因,如果系统达到最大TCP端口计数,则suds以某种方式假设没有TCP端口可用于打开连接以获取导入,并在连续期间抛出异常:
异常:导入模式(http://www.w3.org/2001/XMLSchema) at (http://www.w3.org/2001/XMLSchema.xsd),失败
重复一遍,只有当suds必须打开之前的连接才能获得导入时,才会发生这种情况。如果不使用ImportDoctor,那么如果TCP端口数达到最大值,suds就没有问题,它只是在可用的最小端口处重新启动。
有没有人知道如何解决这个问题?我真的很感谢你的帮助!
发布于 2014-08-01 14:54:43
我已经知道问题出在哪里了。我试图与suds一起使用的WSDL缺少的模式是:
http://www.w3.org/2001/XMLSchema
该模式的XSD文件位于:
http://www.w3.org/2001/XMLSchema.xsd
因此,当我使用suds ImportDoctor添加这个模式导入时,有时w3.org域会拒绝我的访问(不知道为什么真的),这就是为什么这个错误正在上升的原因:
异常:导入模式(http://www.w3.org/2001/XMLSchema) at (http://www.w3.org/2001/XMLSchema.xsd),失败
我做了什么来解决这个问题?我刚刚将这个模式下载到我的机器上,并使用suds ImportDoctor在本地检索此导入。
就这样!令人困惑的虫子!但解决了的问题。
https://stackoverflow.com/questions/25019780
复制相似问题