2016-09-26 22 views
0

我已经使用python的请求模块在每次迭代中使用不同的数据集对单个URL执行POST调用(在循环内)。我已经使用会话重用来在循环迭代期间对URL的每次调用使用底层TCP连接。Python请求缓存身份验证标头

但是,我想进一步加速我的处理1.缓存URL和认证值(用户ID和密码),因为它们在每次调用中保持不变2.产生多个子进程,可能需要一定数量的呼叫,并将它们作为一个组传递,从而允许并行处理这些较小的子进程

请注意,我将身份验证作为base64格式的头传递给我,并且我的post调用的伪代码通常看起来像这样:

S=requests.Session() 
url='https://example.net/' 
Loop through data records: 
    headers={'authorization':authbase64string,'other headers'} 
    data="data for this loop" 
    #Post call 
    r=s.post(url,data=data,headers=headers) 
response=r.json() 
#end of loop and program 

请检查场景并提出任何技巧/建议whic^h可能会帮助 -

感谢提前, 阿布舍克

+0

方法多种多样,你有没有真正尝试实现任何? –

回答

0

您可以:

  1. 做到像你描述的(如果你想更快,那么你可以使用它多跑)并且例如为会话添加标题,而不是请求。
  2. 修改目标服务器,并允许发送多个数据(所以你要限制花在连接时间等)
  3. 做服务器端的一些optimalizations一个POST请求,所以它会回复快(或只是存储请求和发送响应你使用一些回调)

如果您所描述的用例:)这将是很容易

+0

嗨@sokoli不幸的是,我无法访问托管API的服务器,也无法修改API以使用来自多个请求的数据。我的整个解决方案取决于能够使用单个调用API并在python中创建一个批处理程序,以循环流式传输请求/ POST调用 –

+0

@AbhishekGhosh然后只需使用循环/多处理,以便您可以发送很多请求一次(进程数取决于后端性能和限制)。 – sokoli