我正在构建一个客户机来从一个大型数据库中获取数据,该数据库可通过WSDL web服务获得。 每个请求大约需要2-3秒,因此需要几天时间来获取~300k个项目(300k个请求)。所以我试图做的是设置多线程,每个线程分别请求一个项目。 我尝试了C和Python,但在这两种情况下,它的工作方式就像是一个线程(按顺序输出项)。 当尝试使用SoapUI负载测试时,它工作得更快!每x个回复一起(取决于x个线程)。 我不确定我做错了什么,或者是否应该使用除多线程之外的其他方法。在
下面是一个python脚本的例子,在这个例子中,我提到了How to use threading in Python?以及许多其他的SOF问题。在
import zeep
from requests import Session
from zeep import Client
from zeep.transports import Transport
session = Session()
session.verify = False
transport = Transport(session=session)
SearchItemsWSDL = 'https://WSDL_LINK?wsdl'
SearchItemsClient = Client(wsdl=SearchItemsWSDL, transport=transport)
def ItemSearcher( ItemId ):
ItemRequest_data = {
'DownloadOptions':{
'ProductInfo': 'Full',
'ProductInfoFormat': 'XML',
},
'ItemId': ItemId,
}
response = SearchItemsClient.service.GetItemById(ItemRequest_data)
print(response.Item.ItemName)
my_array = [322191,325393,326857,325393,322278,321851,324908,322746,324604,329211]
from multiprocessing.dummy import Pool as ThreadPool
pool = ThreadPool(8)
results = pool.map(ItemSearcher, my_array)
#results = []
#for item in my_array:
# results.append(ItemSearcher(item))
无论是我的代码有什么问题,还是我对这个概念的使用有什么问题,我都会很感激你的帮助。在
问候
目前没有回答
相关问题 更多 >
编程相关推荐