python-3.x - Asyncio 任务同步运行
问题描述
我是 python 新手,并尝试并行执行 http post 请求以加快脚本的处理时间
该脚本明智地从 Excel 工作表中获取数据,并为工作表中的每一行执行 http post。下面是我正在尝试的代码:
def auth():
"Do something"
def read_excel():
xlfile='data.xls'
xls=pandas.ExcelFile(xlfile)
df1=pandas.read_excel(xls,'sheet1')
df2=pandas.read_excel(xls,'sheet2')
return df1,df2
def trigger_job(auth_user,headers,url,record):
payload=request.post(url,auth=(auth_user,auth_pass),headers,record)
'''some code to further process data'''
def template_read(sheet):
with open('templates.json') as templates:
data=json.load(templates)
url=data[sheet]['url']
return url
async def execute_job(df,url,auth_user,auth_pass,headers):
yeslist=["yes","YES"]
recycledf=df[df['Recycle?'].isin(yeslist)]
recycledf=recycledf.drop(['Recycle?'],axis=1)
recycle_json=recycledf.to_json(orient='records')
for record in recycle_json:
trigger_job(auth_user,headers,url,record)
async def main():
sheet1=loop.create_task(execute_job(df1,template_read("sheet1"),auth_user,auth_pass,headers)
sheet2=loop.create_task(execute_job(df2,template_read("sheet2"),auth_user,auth_pass,headers)
await asyncio.wait([sheet1,sheet2])
if __name__=="__main__":
auth_user,auth_pass,headers=auth()
df1,df2=read_excel()
loop= asyncio.geteventloop()
loop.run_until_complete(main())
此代码同步运行 sheet1 和 sheet2 任务。Sheet1 任务 execute_job 和 for 循环阻止 sheet2 任务
而我的期望是并行运行 sheet1 任务和 sheet2 两个任务并最终收集结果。
由于我是新手,任何线索都会有所帮助。谢谢
解决方案
推荐阅读
- c# - InvalidOperationException:无法翻译 LINQ 表达式
- javascript - 反应原生图像边框半径太大
- selenium - 为什么我的脚本没有选择证书?
- tomcat - 如何将 tomcat 8.5 转换为安装所需库的 TomEE?
- c# - 传输级别的 C# SqlConnection 安全和加密
- colors - 如何转换格式为 0.986246,0.007121,0.027434,1.000000 的颜色代码
- html - 如何使用 flexbox 实现这种灵活布局
- mongodb - 在 mongoDB 中替换 $Set
- javascript - 防止 HTML 表格行被拖到另一个表格
- c++ - 使用条件语句仅在 C++ 中对输入的 3 位数字从最小到最大进行排序