Мне известно дветри таких библиотеки:
Позволяет реализовывать как асинхронный клиенты, так и асинхронные серверы. Пример асинхронного http запроса (скопировано из документации: Client Quickstart):
import aiohttp
import asyncio
async def main():
async with aiohttp.ClientSession() as session:
async with session.get('http://httpbin.org/get') as resp:
print(resp.status)
print(await resp.text())
asyncio.run(main())
Только клиент, может использоваться для синхронных и асинхронных http запросов. Пример асинхронного запроса:
import asyncio
import httpx
async def main():
async with httpx.AsyncClient() as client:
response = await client.get('https://www.example.com/')
print(response)
asyncio.run(main())
Опять же, пример взят из документации: Async Support
Форк requests c дополнительными фичами, в том числе с поддержкой асинхронности.
Пример кода с асинхронностью на основе примера из readme:
import niquests
import asyncio
async def main():
s = niquests.AsyncSession()
r = await s.get('https://pie.dev/basic-auth/user/pass', auth=('user', 'pass'), stream=True)
print(r)
print(await r.json())
asyncio.run(main())
Сессию также можно использовать как менеджер контекста, аналогично предыдущим библиотекам:
async with niquests.AsyncSession() as s:
r = await s.get('https://pie.dev/basic-auth/user/pass', auth=('user', 'pass'), stream=True)
print(r)
print(await r.json())
Документация: Quickstart - Async session (и разделы ниже).