aiohttp 的 connection pool
趁屁貓在回血的時候快速發個廢文….
話說昨天很認真(?)的把 Client 的文件看完…(之前都偷懶直接用 dir
查QQ),雖然文件也沒很長就是惹。
會看文件主要是因為最近又有在用 aiohttp
(沒有很大量的 request 的時候,常常偷懶用 requests
QQ),一直覺得之前在spawn 大量 request 的時候用 Semaphore
好像有點蠢(?)….
總之文件看完才知道 ClientSession
本身就有支援 connection pool (不過參數是在 TCPConnector
裡面,所以之前 dir
& help
的時候都沒發現…),預設是 100
,然後 ClientSession
在下 request
的時候還有 timeout
可以用…比起直接用 aiohttp.request
的時候得再外層再包個 with timeout(..)
方便多了QQ
結論是晚上就直接順手改了個版用 ClientSession
取代掉 Semaphore
。(速度真的是快到我有點要不行惹///)
connection pool 預設會 keep-alive
也避免一直開新的 socket ,不過這種時候就非常容易遇到 timeout
….(擔心會被鎖 IP QQ)
大概就這樣惹,其他都在 code 跟文件裡面可以自己看(?)
btw , response object 預設是 streaming 的,可以用 readany
在 task switching 之後讀多少算多少,比用 chunksize 方便多惹。(範例在這裡)
沒惹 bye