Aiohttp是Python的最快的非同步HTTP客戶端/伺服器庫包

banq發表於2021-06-18

Aiohttp用於asyncio和 Python 的非同步 HTTP 客戶端/伺服器。
主要特點


客戶端程式碼:

import aiohttp
import asyncio

async def main():

    async with aiohttp.ClientSession() as session:
        async with session.get('http://python.org') as response:

            print("Status:", response.status)
            print("Content-type:", response.headers['content-type'])

            html = await response.text()
            print("Body:", html[:15], "...")

loop = asyncio.get_event_loop()
loop.run_until_complete(main())


伺服器示例:

from aiohttp import web

async def handle(request):
    name = request.match_info.get('name', "Anonymous")
    text = "Hello, " + name
    return web.Response(text=text)

app = web.Application()
app.add_routes([web.get('/', handle),
                web.get('/{name}', handle)])

if __name__ == '__main__':
    web.run_app(app)


有人將其與其他Python非同步庫比較,發現其是最快的:
  • 第一代是可靠的老requests
  • 第二代是使用執行緒發出請求的方法。為每個請求分拆一個本機執行緒,讓它們在幕後執行。
  • 第三代使用aiohttp
  • 第四代使用HTTPX,它是 Python Web 客戶端的現代實現。
  • 使用pycurl

結果令人印象深刻,但 aiohttp 庫仍然更快。

 

相關文章