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()

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()

原文地址:https://www.cnblogs.com/ftl1012/p/9424792.html

时间: 2024-10-05 05:04:41

Python学习---IO的异步[asyncio +aiohttp模块]的相关文章

Python学习---IO的异步[gevent+Grequests模块]

安装gevent模块 pip3 install gevent Gevent实例 import gevent import requests from gevent import monkey # socket发送请求以后就会进入等待状态,gevent更改了这个机制 # socket.setblocking(False) -->发送请求后就不会等待服务器响应 monkey.patch_all() # 找到内置的socket并更改为gevent自己的东西 def fetch_async(method

Python学习---IO的异步[twisted模块]

安装twisted模块 Linux: pip3 install twisted Window: a. http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted, 下载:Twisted-17.1.0-cp35-cp35m-win_amd64.whl b. 进入文件所在目录 c. pip3 install Twisted-17.1.0-cp35-cp35m-win_amd64.whl Twisted实例[小有问题] from twisted.web.cli

python 学习笔记 14 -- 常用的时间模块之datetime

书接上文,前面我们讲到<常用的时间模块之time>,这次我们学习datetime -- 日期和时间值管理模块 使用apihelper 查看datetime 模块,我们可以看到简单的几项: date       ---  日期对象,结构为date(year, month, day) time       ---  时间值对象,结构为 time([hour[, minute[, second[, microsecond[, tzinfo]]]]]).时间对象所有的参数都是可选的.tzinfo 可以

python 学习笔记 13 -- 常用的时间模块之time

Python 没有包含对应日期和时间的内置类型,不过提供了3个相应的模块,可以采用多种表示管理日期和时间值: *    time 模块由底层C库提供与时间相关的函数.它包含一些函数用于获取时钟时间和处理器的运行时间,还提供了基本解析和字符串格式化工具 *    datetime 模块为日期.时间以及日期时间值提供一个更高层接口.datetime 中的类支持算术.比较和时区配置. *    calendar 模块可以创建周.月和年的格式化表示.它还可以用来计算重复事件.给定日期是星期几,以及其他基

Python学习笔记4(函数与模块)

1.Python程序的结构 Python的程序由包(package).模块(module)和函数组成. 模块是处理一类问题的集合,由函数和类组成. 包是由一系列模块组成的集合.包是一个完成特定任务的工具箱. 2.函数 2.1函数的定义 def sayHello(): print 'Hello World!' # block belonging to the function sayHello() 2.2函数的参数Python中任何东西都是对象,所以参数只支持引用传递的方式.Python通过名称绑

python学习笔记-Day05-第二部分(模块简介)

模块是一种组织形式,他是 实现了某个功能的代码的集合,它将彼此有关系的代码组织到一个文件或一个目录中(目录中包含多个文件,这里改称为 "包"). 模块分三类 内置模块 第三方模块 自定义模块 模块的定义: package/└── mod01.py package/├── mod01.py├── mod02.py└── mod03.py package/├── __init__.py├── mod01.py├── mod02.py└── mod03.py package/├── __in

python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)

一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sys.argv) #打印相对路径,在pycharm输出结果是绝对路径,因为在pycharm中调用 print(sys.argv[2]) #可以从数据列表中取值,[2]指取第三位.        标准库存放位置:C:\Python35\Lib 第三方库存放位置C:\Python35\Lib\site-p

Python学习笔记总结(二)函数和模块

一.函数 函数的作用:可以计算出一个返回值,最大化代码重用,最小化代码冗余,流程的分解. 1.函数相关的语句和表达式 语句        例子 Calls        myfunc(‘diege','eggs',meat=‘lit’) #使用函数 def,return,yield      def adder(a,b=1,*c):                        return a+b+c[0] global        changer():                 gl

Python学习---IO编程

读文件 f = open('/Users/michael/test.txt', 'r')如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在. 如果文件打开成功,接下来,调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示: >>> f.read() 'Hello, world!' 最后一步是调用close()方法关闭文件.文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作