繁体   English   中英

如何在Python中发出多个并行SOAP请求

[英]How To Make Multiple Parallel SOAP Requests in Python

我每天需要通过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]
data = [y.get(timeout=1) for y in results]

def download(client, reference):
    response = client.get_data(reference)
    return response

其中clientsuds.Client()

但是,当我尝试在结果上调用get()并显示以下错误消息时,此操作失败:

suds.MethodNotFound: Method not found: 'ReferenceDataService.WSHttpBinding_ReferenceSearchService.__getinitargs__'

当我依次拨打每个电话时,不会引发此错误。

我可以在Python中进行多个并行SOAP调用吗?

我也遇到了这个问题。 在我的情况下,根本原因是我的代码试图缓存调用的结果,特别是在缓存层尝试序列化结果时。 结果包含对suds.Client的引用以及尝试对suds.Client.service对象调用__getinitargs__()序列化尝试。 然后,suds代码尝试在服务的WSDL定义中查找具有该名称的方法,但是不能并且因此引发异常。

根据您的描述,这可能没有相似之处。 尽管如此,似乎还是值得分享,以防万一,或者有人偶然发现了这个问题。 =)

这是我发现对Python 2中的序列化有用的一些参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM