首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SUDS异常导入模式失败

SUDS异常导入模式失败
EN

Stack Overflow用户
提问于 2014-07-29 15:59:52
回答 1查看 2.2K关注 0票数 0

我得到了错误:

异常:导入模式(http://www.w3.org/2001/XMLSchema) at (http://www.w3.org/2001/XMLSchema.x sd),失败

将医生(用ImportDoctor构造)传递给suds客户端构造器时。

我正在两台Windows机器上工作,它们都安装了相同版本的suds,但其中只有一台出现了上述错误。

有人能在这里引导我知道这个错误产生的原因吗?这样我就能知道机器上遗漏了什么?

提前谢谢!

UPDATE:我不知道这是否重要,但值得注意的是,我正在上升错误的机器是Amazon实例。在我的本地机器上,一切都很好!

更新:下面是我在我提到的机器的python解释器上运行的一些代码。在这里你可以详细说明错误是如何上升的..。

代码语言:javascript
复制
>>> 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就没有问题,它只是在可用的最小端口处重新启动。

有没有人知道如何解决这个问题?我真的很感谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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在本地检索此导入。

就这样!令人困惑的虫子!但解决了的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25019780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档