2016-09-26 47 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