如何用python协程实现并发请求?

比如有10000张图片,每张图片上有大量的文字,需要访问OCR接口取解析图片上的文字,接口响应时间2s。
如何用python协程实现并发请求?

阅读 5.1k
1 个回答
import aiohttp
import asyncio
import aiofiles


async def foo(filename):
    async with aiofiles.open(filename, 'rb') as f:
        content = await f.read()

    async with aiohttp.ClientSession() as session:
        async with session.post(url='http://httpbin.org/post', data=content):
            pass


if __name__ == "__main__":
    filenames = list()
    loop = asyncio.get_event_loop()
    tasks = [foo(filename=filename) for filename in filenames]
    loop.run_until_complete(asyncio.wait(tasks))
    loop.close()

当然不仅仅可以使用aiohttp,如果在Python2,gevent也是一个不错的选择~

推荐问题