asyncio学习(1)

官方教程:
【1】https://compiletoi.net/fast-scraping-in-python-with-asyncio/
【2】https://docs.python.org/3.4/library/asyncio.html
【3】http://aiohttp.readthedocs.io/en/stable/

我用的python版本是 3.5.2 ,官方给出的 body=yield from response.read_and_close() 方法不可行,然后我拆分成下面的代码,以后会继续学习 异步

import asyncio
import aiohttp


@asyncio.coroutine
def wget(host):
    print ('wget %s' %host)
    connect=asyncio.open_connection(host,80)
    reader,writer=yield from connect
    header='GET / HTTP/1.0\r\nHost: %s\r\n\r\n' % host
    writer.write(header.encode('utf-8'))
    yield from writer.drain()
    while True:
        line=yield  from reader.readline()
        if line ==b'\r\n':
            break
        print ('%s header > %s' %(host,line.decode('utf-8').rstrip()))
        writer.close()

@asyncio.coroutine
def print_page(url):
    response=yield from aiohttp.request('GET',url)
    body=yield from response.read()
    response.close()
    print (body)



#loop=asyncio.get_event_loop()
#tasks=[wget(host) for host in ['mail.163.com','www.sina.com.cn','www.sohu.com']]
#loop.run_until_complete(asyncio.wait(tasks))


loop=asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait([print_page('http://tieba.baidu.com/i/357696678/concern'),print_page('http://www.baidu.com')]))
loop.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值