zoukankan      html  css  js  c++  java
  • Python学习---IO的异步[asyncio +aiohttp模块]

    aiohttp

    aiohttp是在asyncio模块基础上封装的一个支持HTTP请求的模块,内容比8.4.2【基于asyncio实现利用TCP模拟HTTP请求】更全面

    安装aiohttp:

    pip3 install aiohttp

    asyncio + aiohttp实现异步请求【有问题】

    import aiohttp
    import asyncio
    @asyncio.coroutine
    def fetch_async(url):
        print(url)
        response = yield from aiohttp.request('GET', url)
        # data = yield from response.read()
        # print(url, data)
        print(url, response)
        response.close()
    tasks = [fetch_async('http://www.cnblogs.com/'), fetch_async('http://www.chouti.com/')]
    event_loop = asyncio.get_event_loop()
    results = event_loop.run_until_complete(asyncio.gather(*tasks))
    event_loop.close()

    image

    asyncio + requests完成IO异步

    asyncio + requests完成IO异步

    import asyncio
    import requests
    @asyncio.coroutine
    def fetch_async(func, *args): 
        # 获取事件循环:就是有个循环一直等待这用户的响应
        loop = asyncio.get_event_loop()
        future = loop.run_in_executor(None, func, *args) # 执行传递进来的get函数
        response = yield from future
        print(response.url, response.content)
    tasks = [
        fetch_async(requests.get, 'http://www.cnblogs.com/ftl1012/'),
        fetch_async(requests.get, 'http://dig.chouti.com/images/homepage_download.png')
    ]
    loop = asyncio.get_event_loop()
    results = loop.run_until_complete(asyncio.gather(*tasks))
    loop.close()

    image

  • 相关阅读:
    Python、PyCharm的安装及使用方法(Mac版)
    学习Java web技术
    Java Web基础教程
    JavaWeb--深入Servlet与JSP(运行原理)
    Servlet入门总结及第一个Servlet程序
    Mac系统安装和配置tomcat步骤详解
    Struts2进阶学习4
    Struts2进阶学习3
    Struts2基础学习2
    Struts2基础入门
  • 原文地址:https://www.cnblogs.com/ftl1012/p/9424792.html
Copyright © 2011-2022 走看看