【问题标题】:"OverflowError: date value out of range" using suds-jurko in Python 2.7.10“溢出错误:日期值超出范围”在 Python 2.7.10 中使用 suds-jurko
【发布时间】:2015-07-01 12:35:41
【问题描述】:

我正在使用 suds-jurko 拨打肥皂电话,但遇到了一些障碍。我有许多电话正在工作,但我的一个电话失败了:

Traceback (most recent call last):
  File "soap.py", line 160, in <module>
    result = client.service.QueryCachePointDetails(cachepoint)
  File "C:\Python27\lib\site-packages\suds\client.py", line 521, in __call__
    return client.invoke(args, kwargs)
  File "C:\Python27\lib\site-packages\suds\client.py", line 581, in invoke
    result = self.send(soapenv)
  File "C:\Python27\lib\site-packages\suds\client.py", line 621, in send
    original_soapenv=original_soapenv)
  File "C:\Python27\lib\site-packages\suds\client.py", line 685, in process_repl
y
    self.method, replyroot)
  File "C:\Python27\lib\site-packages\suds\bindings\binding.py", line 147, in ge
t_reply
    return self.unmarshaller().process(nodes[0], resolved)
  File "C:\Python27\lib\site-packages\suds\umx\typed.py", line 66, in process
    return Core.process(self, content)
  File "C:\Python27\lib\site-packages\suds\umx\core.py", line 46, in process
    return self.append(content)
  File "C:\Python27\lib\site-packages\suds\umx\core.py", line 61, in append
    self.append_children(content)
  File "C:\Python27\lib\site-packages\suds\umx\core.py", line 138, in append_chi
ldren
    cval = self.append(cont)
  File "C:\Python27\lib\site-packages\suds\umx\core.py", line 61, in append
    self.append_children(content)
  File "C:\Python27\lib\site-packages\suds\umx\core.py", line 138, in append_chi
ldren
    cval = self.append(cont)
  File "C:\Python27\lib\site-packages\suds\umx\core.py", line 61, in append
    self.append_children(content)
  File "C:\Python27\lib\site-packages\suds\umx\core.py", line 138, in append_chi
ldren
    cval = self.append(cont)
  File "C:\Python27\lib\site-packages\suds\umx\core.py", line 62, in append
    self.append_text(content)
  File "C:\Python27\lib\site-packages\suds\umx\typed.py", line 133, in append_te
xt
    content.text = self.translated(content.text, known)
  File "C:\Python27\lib\site-packages\suds\umx\typed.py", line 139, in translate
d
    return resolved.translate(value)
  File "C:\Python27\lib\site-packages\suds\xsd\sxbuiltin.py", line 162, in trans
late
    return DateTime(value).value
  File "C:\Python27\lib\site-packages\suds\sax\date.py", line 119, in __init__
    self.value = self.__parse(value)
  File "C:\Python27\lib\site-packages\suds\sax\date.py", line 151, in __parse
    value += datetime.timedelta(microseconds=1)
OverflowError: date value out of range

我相信最后一部分是关键,因为 XML 包含这个 gem:

<LastStatusUpdateTime>9999-12-31T23:59:59.9999999</LastStatusUpdateTime>

它阻塞,并吐出那个错误。

所以我的问题是:我可以使用 suds-jurko 删除 XML 的这个特定部分吗?这是 suds-jurko 的问题还是 XML 响应的问题?

提前谢谢你!

【问题讨论】:

    标签: python xml soap suds


    【解决方案1】:

    我能够使用 MessagePlugin 解决这个问题:

    class TimePlugin(MessagePlugin):
      def received(self, context):
            search = context.reply.replace('9999-12-31T23:59:59.9999999', '')
            context.reply = search
    

    然后我后来用:

    client = Client(url, plugins=[TimePlugin()])
    

    我认为问题在于 suds-jurko 在试图将时间增加一微秒时死亡,但只需将时间更改为其他时间就很容易了。它只发生在此处,并且只能在特定情况下发生,因此此修复程序现在可以使用。

    我最终可能只是减少时间,以便它可以正常增加一微秒,但这只是因为出于输出原因我希望它显示为同一时间。

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 2016-05-23
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多