aiohttp 常用方法

  • Post author:
  • Post category:其他




1. aiohttp 基础用法

# aiohttp.ClientSession(**kw).request的方式即可

import aiohttp
async with aiohttp.ClientSession() as session:
	async with session.get('https://api.github.com/events') as resp:
		assert resp.status == 200
        return await resp.text()



2. session 方法

session.post('http://httpbin.org/post', data=b'data')
session.put('http://httpbin.org/put', data=b'data')
session.delete('http://httpbin.org/delete')
session.head('http://httpbin.org/get')
session.options('http://httpbin.org/get')
session.patch('http://httpbin.org/patch', data=b'data')



3. 案例

async def fetch(client,url):
    async with client.get(url) as resp:
        assert resp.status == 200
        text = await resp.text()
        return len(text)

#urls是包含多个url的列表
async def fetch_all(urls):
    async with aiohttp.ClientSession() as client:
        return await asyncio.gather(*[fetch(client,url) for url in urls])
    
urls = ['http://python.org/' for i in range(3)]
loop=asyncio.get_event_loop()
results = loop.run_until_complete(fetch_all(urls))
print(results)
print(type(results))