问题描述
我有一个故事,其中通过Web服务发送动态填充的xml文档。这是我在python3.x中使用的内容:
import requests
import pandas as pd
df = pd.DataFrame({'A': ['a','b','a','g','h','m','e'],'B': ['b','c','a'],'C': [1,2,3,4,5,6,7]})
headers = {'content-type':'text/xml'}
for index,row in df.iterrows():
if row['B'] == 'a':
a_wsdl = 'wsdl url'
body = """
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header/>
<soap:Body>
<soap:Fault>
"""+str(row['C'])+"""
</soap:Fault>
</soap:Body>
</soap:Envelope>
"""
requests.post(a_wsdl,data=body,headers=headers)
elif row['B'] == 'b':
b_wsdl = 'wsdl url'
body = """
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header/>
<soap:Body>
<soap:Fault>
"""+str(row['A'])+"""
</soap:Fault>
</soap:Body>
</soap:Envelope>
"""
requests.post(b_wsdl,headers=headers)
else:
c_wsdl = 'wsdl url'
body = """
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header/>
<soap:Body>
<soap:Fault>
"""+str(row['A'])+str(row['C'])+"""
</soap:Fault>
</soap:Body>
</soap:Envelope>
"""
requests.post(c_wsdl,headers=headers)
使用此方法,我成功地发布了第1,第3,第5,第6,第7迭代,但是缺少第2和第4记录。 我以为发生这种情况的原因是在1至5日之间常见的b_wsdl忙得不可开交。因此,我考虑使用time.sleep(),但这将使代码花费更长的时间。
那时候,我想到了使用三种著名的解决方案之一:asyncio,多处理或多线程。但是,由于WSDL的繁忙是一个问题,因此我不确定哪一个适合我的情况。
有什么想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)