aiohttp 的 connection pool

貓橘毛 aka Lanfon
2 min readAug 6, 2017

--

趁屁貓在回血的時候快速發個廢文….

話說昨天很認真(?)的把 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

--

--

貓橘毛 aka Lanfon
貓橘毛 aka Lanfon

Written by 貓橘毛 aka Lanfon

知,不知,上;不知,知,病。

No responses yet