gpt4 book ai didi

python - 使用 SUDS 在 Python 中处理错误

转载 作者:太空狗 更新时间:2023-10-29 17:13:31 24 4
gpt4 key购买 nike

我一直在尝试使用 SUDS 通过 wsdl 文件来控制相机。我的代码可以正常工作,但我想将错误处理放入脚本中。我尝试了不同的异常(exception),但无法使脚本正常工作。当我输入一个无效的坐标时,我得到一个错误。下面是我使用的代码,后面是我收到的错误。

#!/home/build/Python-2.6.4/python

import suds
from suds.client import Client

####################################################################
#
# Python SUDS Script that controls movement of Camera
#
####################################################################
#
# Absolute Move Function
#
####################################################################

def absoluteMove():

# connects to WSDL file and stores location in variable 'client'
client = Client('http://file.wsdl')

# Create 'token' object to pass as an argument using the 'factory' namespace
token = client.factory.create('ns4:ReferenceToken')
print token

# Create 'dest' object to pass as an argument and values passed to this object
dest = client.factory.create('ns4:PTZVector')
dest.PanTilt._x=400
dest.PanTilt._y=0
dest.Zoom._x=1
print dest

# Create 'speed' object to pass as an argument and values passed to this object
speed = client.factory.create('ns4:PTZSpeed')
speed.PanTilt._x=0
speed.PanTilt._y=0
speed.Zoom._x=1
print speed

# 'AbsoluteMove' method invoked passing in the new values entered in the above objects

try:
result = client.service.AbsoluteMove(token, dest, speed)
except RuntimeError as detail:
print 'Handling run-time error:', detail

print "absoluteMove result ", result

result = absoluteMove()

错误如下:

No handlers could be found for logger "suds.client"
Traceback (most recent call last):
File "ptztest.py", line 48, in <module>
if __name__ == '__main__': result = absoluteMove()
File "ptztest.py", line 42, in absoluteMove
result = client.service.AbsoluteMove(token, dest, speed)
File "build/bdist.linux-i686/egg/suds/client.py", line 537, in __call__
File "build/bdist.linux-i686/egg/suds/client.py", line 597, in invoke
File "build/bdist.linux-i686/egg/suds/client.py", line 632, in send
File "build/bdist.linux-i686/egg/suds/client.py", line 683, in failed
File "build/bdist.linux-i686/egg/suds/bindings/binding.py", line 235, in get_fault
suds.WebFault: Server raised fault: 'Error setting requested pan'

我不确定我应该在这里使用哪个异常。有谁知道如何捕获此错误。值为 400 的 x 坐标以度为单位,这就是发生错误的原因。

谢谢

好的,我已经找到了解决方案。在 SUDS 中,如果您输入:

faults=False

到客户端定义中,这会捕获错误并给出错误发生的原因。该行应为:

client = Client('http://file.wsdl', faults=False)

我标记为正确答案的帖子也能够发现问题已经发生。

谢谢大家

最佳答案

如果您处理了代码中的所有异常和错误并且您的代码工作正常,但您仍然收到以下消息以及正确的输出。

消息:“找不到记录器 suds.client 的处理程序”

那么一个简单的解决方案就是添加这一行

logging.getLogger('suds.client').setLevel(logging.CRITICAL)

在所有 import 语句之后的 yourclient.py 文件中。

关于python - 使用 SUDS 在 Python 中处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2085128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com