使用suds和代理发送数据耗时巨大

2 投票
1 回答
901 浏览
提问于 2025-04-15 17:08

我有一段代码是用suds通过代理发送数据的:

 import suds
 t = suds.transport.http.HttpTransport()
 proxy = urllib2.ProxyHandler({'http': 'http://192.168.3.217:3128'})
 opener = urllib2.build_opener(proxy)
 t.urlopener = opener
 ws = suds.client.Client('http://xxxxxxx/web.asmx?WSDL', transport=t)
 req = ws.factory.create('ActionRequest.request')
 req.SerialNumber = 'asdf'
 req.HostName = 'hola'
 res = ws.service.ActionRequest(req)

我不知道为什么,有时候发送数据需要2到3分钟,甚至更久,这时会出现“网关超时”的错误。如果不使用代理,发送数据的时间一般在2秒以内。这里是SOAP的回复:

(ActionResponse){
   Id = None
   Action = "Action.None"
   Objects = ""
 }

这个代理在用urllib2发送其他请求时运行正常,或者在像火狐这样的普通浏览器中也没问题。

有没有人知道suds在这里发生了什么情况?

非常感谢大家的帮助!!!

1 个回答

0

抓包工具的输出(比如wireshark的结果)对理解这个问题会非常有帮助。

撰写回答