【💊 Python的解憂錦囊】requests 流式(stream)請求

閱讀時間約 3 分鐘

更快、更短、更即時是串流傳輸必要的元素, 而我們常常在使用Python請求API時都是等待式回應, 也就是一個請求過去之後, 待對方處理完畢後再行回應, 但假設需要下載的檔案、內容非常大時, 是不是使用者只能傻傻的等待整個傳輸結束後才能顯示? 這樣的使用者體驗也實在太糟糕了, 對於使用者來說除了完全狀況外之外, 也不知道到底有沒有在運作, 而你知道嗎? 其實http request的請求也有支援「流(stream)」式的傳輸, 它可以怎麼用呢?我們底下才會一一進行說明。

Python的requests裡面有get、post、put、delete…功能, 其中有一個stream參數, 想必平常也不太會去使用它吧! 除非我們今天拿著get去取一個超大(100GB)的檔案, 我們就會知道怎麼一直在等、等、等…, 那究竟有沒有辦法下載一點點就儲存一點點或者處理一點點呢? 答案是有的, stream這個關鍵參數就是個關鍵, 它可以讓我們一包包的下載檔案或者文本, 假如是文本的話就可以即時的顯示給使用者, 大幅度的提昇使用者體驗。

raw-image


有哪些關鍵功能可以使用?

raw-image

requests有post、get、put、delete…, 裡面都可以設定stream參數, 而得到的response則有「iter_content」、「iter_lines」兩個函式可以一部分的拉取資料, 我們可以看看底下的使用範例。

不過通常我們只會用get、post來設定stream=True。


使用範例

response = requests.get(url, stream=True)
for chunk in response.iter_content(chunk_size=1024):
...對每個chunk進行處理

什麼時候開始流(stream)?

當我們進行請求時, 其實還沒有開始下載資料。

requests.get(xxx, stream=True)

而是呼叫了「iter_content」、「iter_lines」之後才會開始下載, 並且我們也可以決定一次要拉多少大小。

response = requests.get(xxx, stream=True)
for chunk in response.iter_content(chunk_size=1024):
xxx

注意事項

  • chunk_size如果太大, 那要注意記憶體夠不夠, 而且設定非常大的話不如就直接原生的等待回應。
  • stream=True時, 無法使用response.text或response.content, 而是要用「iter_content」、「iter_lines」讓資料像水流一下慢慢流。

結語

今天介紹的requests套件是我們在python常常請求API會使用到的, 只是stream平常真的比較少用, 那為什麼我們會注意到這個部份呢? 主要是我們在「🔒 阿Han的軟體心法實戰營 - kafka專區」會大量的學習到串流技術, 那其中的ksql篇章就會使用http的stream來串流讀取流式資料, 因此我們先開了這篇章來說明一番, 日後當您接觸到kafak這類的串流技術時相信肯定能派上用場。

94會員
268內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
[Python] [微進階]數學運算的反直覺結果有時候在使用數學運算時,會出現一些看似反直覺的結果。 這些錯誤可能是由於我們對於數學規則的誤解或者忽略了一些細節所導致的。 以下是一些 Python 的例子: 除餘數 例如負數求餘數。 假設-15 % 90 狀況下 會下意思覺得結果還是 -15 但輸出的結果是 75。
avatar
螃蟹_crab
2024-04-25
Python中的函式操作們(上)今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
avatar
媗日
2024-04-25
🌟 揭密六大營養素-(五) 維生素的奧秘 💊🍊維生素是維持身體正常運作所不可或缺的元素,讓我們一同揭密維生素的奧秘。
Thumbnail
avatar
睿思健康服務中心(Right-thinks)
2024-02-07
掌握抗生素的正確使用,守護身體健康 🌐💊在現代醫學中,抗生素扮演著重要的角色,對抗細菌感染、保護我們的身體健康。然而,正確使用抗生素是保護自己和社會免受抗藥性影響的關鍵。一起來了解抗生素的基本知識,從使用時機到副作用,提供您全方位的了解。 💡
Thumbnail
avatar
睿思健康服務中心(Right-thinks)
2024-01-29
💊國安基金退場!護盤275天,都快滿周歲了🎂經濟是國家的命脈,社稷重點無可厚非,國際情勢不好、經濟危機出現時,國家資源救市,穩定法人、投資人信心,維持正常的金融機轉,讓國家度過危機,👍值得嘉許,只是這次國安基金護盤的故事,讓人百般尋味。 台股去年創下18650破紀錄新高,隨著國際局勢一起回檔,國安基金決定進場護盤: 第一:當時股市萬八,不是
Thumbnail
avatar
AFP紫微先生
2023-04-14
緊急存糧做得💊好財務危機沒煩惱在最近動盪的銀行冒險記裡,開始出現銀行倒閉的新聞,或是接近倒閉被接管,💣一個個炸彈,在主政者的輔助下,細細呵護的灌溉、包紮,給予營養補給,🇺🇸美洲的銀行危機,暫時告一段落。 後來出現了另一個危機,CS瑞士信貸,不是CS絕對武力,Credit Suisse,規模同比有過之而無不及,好像一顆加大的
Thumbnail
avatar
AFP紫微先生
2023-03-20
祖兒抗癌日記 💊 術後和確診一年啦🫶🏻這一年來,得到最大的收穫就是「做自己」! 最浪費時間的事是什麼呢?就是拿自己和別人比較🥹 嘿親愛的,我們都是獨特且美麗的存在❤️
Thumbnail
avatar
girlgirljoey
2023-03-13
感恩操練特效藥💊今天的領受是在上個禮拜每週五都會去上的照顧者關懷工作坊, 課中領受到的!! (哈哈只剩下禮拜最後一堂課了) 感謝主也可以給我些思考, 和這個領受❤️🤗 這週應該算是課堂裡 塞最多內容的一課了, 哈哈我後來都有點精神渙散想睡了🤣 辛苦老師了!!! 主要講到兩個主題: 步向正面思考、一些用藥知識 和
Thumbnail
avatar
joycewui儀
2022-12-21
訂閱型威而鋼公司💊12月一家最接近海波股定義的公司第一家公司產品的由專業團隊設計和研發的,因此品質得到保證。提供豐富的資源,包括在線健康諮詢服務和健康資訊,幫助顧客了解如何使用產品和實現健康目標。該公司的產品具有良好的可負擔性。通過線上購買,顧客可以輕鬆訂購所需的產品,並且該公司的價格也相對實惠。
Thumbnail
avatar
AI效率家
2022-12-19
紅藥丸💊談為什麽有些女生會讓你一直等到婚後《女性性需求第一定律》 為什麼有些女生總是會把性行為這件事無限往後延? 今天史提將從紅藥丸演化博弈心理學的角度 ,來探討一下這個問題🤨 想像你是一個妹子,有一個男的每天照三餐都會給妳鮮花素果🍉🍑🥝因為他想追妳,妳能有的選項: 1.跟他交往並啪啪啪🤨 2.不跟他交往也不啪啪啪🤔 = ;
avatar
史提的妄語
2022-04-29