您的位置:首页 > 编程语言 > Python开发

廖雪峰Python Day-2代码解析

2015-12-18 16:40 731 查看
源代码

import logging; logging.basicConfig(level=logging.INFO)

import asyncio, os, json, time
from datetime import datetime

from aiohttp import web

def index(request):
return web.Response(body=b'<h1>Awesome</h1>')

@asyncio.coroutine
def init(loop):
app = web.Application(loop=loop)
app.router.add_route('GET', '/', index)
srv = yield from loop.create_server(app.make_handler(), '127.0.0.1', 9000)
logging.info('server started at http://127.0.0.1:9000...') return srv

loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
loop.run_forever()


代码解析

def index(request):

return web.Response(body=b'<h1>Awesome</h1>')


request为aiohttp.web.request实例, 包含http请求的信息, 一般不用自己构造

web.Response
构造并返回一个response实例, Response类声明为
class aiohttp.web.Response(*, status=200, headers=None, content_type=None, body=None, text=None)


@asyncio.coroutine
将generator标记为coroutine类型, coroutine内部可以用
yield from
调用另一个coroutine

app = web.Application(loop=loop)
创建web服务器实例

loop: event loop used for processing HTTP requests

web.Application用法

app.router.add_route('GET', '/', index)
为route路径注册处理函数

srv = yield from loop.create_server(app.make_handler(), '127.0.0.1', 9000)


loop.create_server创建一个TCP server

app.make_handler()
Creates HTTP protocol factory for handling requests.

yield from
返回一个创建好的,绑定IP和端口以及http协议簇的监听服务的协程

loop = asyncio.get_event_loop()
生成一个事件循环实例

loop.run_until_complete(init(loop))
运行init(loop), run_until_complete: If the argument is a coroutine object, it is wrapped by ensure_future().对loop进行了初始化, 创建了tcp server?

loop.run_forever()
一直运行

引用

廖雪峰Python教程Day2

Go-coding的博客

aiohttp官方文档

python官方文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python