如何用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也是一个不错的选择~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题