如何在Python中生成多个并行SOAP请求
我需要通过SOAP每天提出很多(约10000个)请求。按照他们服务器的设置方式,我无法批处理请求,而是需要单独发出每个请求。但是我可以同时提出许多请求 我使用的基本模式是:如何在Python中生成多个并行SOAP请求,python,soap,parallel-processing,Python,Soap,Parallel Processing,我需要通过SOAP每天提出很多(约10000个)请求。按照他们服务器的设置方式,我无法批处理请求,而是需要单独发出每个请求。但是我可以同时提出许多请求 我使用的基本模式是: import multiprocessing as mp ids = client.get_available_ids() pool = mp.Pool(processes=10) results = [mp.apply_async(download, args=(client, x)) for x in ids] dat
import multiprocessing as mp
ids = client.get_available_ids()
pool = mp.Pool(processes=10)
results = [mp.apply_async(download, args=(client, x)) for x in ids]
data = [y.get(timeout=1) for y in results]
def download(client, reference):
response = client.get_data(reference)
return response
其中client
是一个suds.client()
但是,当我尝试对结果调用get()
时,此操作失败,并显示以下错误消息:
suds.MethodNotFound: Method not found: 'ReferenceDataService.WSHttpBinding_ReferenceSearchService.__getinitargs__'
当我连续进行每个调用时,不会引发此错误
我可以用Python进行多个并行SOAP调用吗?我也遇到了这个问题。在我的例子中,根本原因是我的代码试图缓存调用的结果,特别是当缓存层尝试序列化结果时。结果包含对
suds.Client
的引用,以及尝试在suds.Client.service
对象上调用\uu getinitargs\uuu()
的序列化尝试。然后,suds代码尝试在服务的WSDL定义中找到具有该名称的方法,但无法找到,因此引发异常
根据你所描述的,这可能没有相似之处。尽管如此,它似乎值得分享,以防它发生或其他人偶然发现这个问题。=)
这里有一些我觉得有用的参考资料。我也遇到了这个问题。在我的例子中,根本原因是我的代码试图缓存调用的结果,特别是当缓存层尝试序列化结果时。结果包含对
suds.Client
的引用,以及尝试在suds.Client.service
对象上调用\uu getinitargs\uuu()
的序列化尝试。然后,suds代码尝试在服务的WSDL定义中找到具有该名称的方法,但无法找到,因此引发异常
根据你所描述的,这可能没有相似之处。尽管如此,它似乎值得分享,以防它发生或其他人偶然发现这个问题。=)
这里有一些我觉得有用的参考资料