廖雪峰Python3-实战Day2-编写Web App骨架的理解
2017-07-06 本文已影响95人
相关函数
笔者新手.记录学习,如有错误,欢迎指正,不胜感激.
源码如下:
import logging; logging.basicConfig(level=logging.INFO)
import asyncio, os, json, time
from datetime import datetime
from aiohttp import web
async def index(request):
return web.Response(body=b'<h1> Awesome </h1>', content_type='text/html')
async def init(loop):
app = web.Application(loop=loop)
app.router.add_route('GET', '/', index)
srv = await 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()
导入相应模块
- 导入logging日志模块.默认情况下,logging将日志打印到屏幕,日志级别为WARNING.日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别. 这里设置为INFO级别 这篇文章详细讲解了logging模块
编写index
-
asyncio官方文档告诉我们,
In order to implement a web server, first create a requesr handler. A request handler is a coroutine or regular function that accepts a Request instance as its only parameter and returns a Response instance:
于是创建index函数,唯一的一个参数为request, 当接收到request的时候就会返回一个response,response中写html代码. 这个函数的需要在配置app的router的时候传入.
编写init
-
需要在一个loop中不断的监听请求并且做相应的响应操作,
-
在 init 方法中 初始化web app服务器.
-
配置router. handler通过将他们与一个特定的路线上设置的application.router处理请求(HTTP方法和路径对).
-
创建一个server. 传入handler, ip 以及端口.
End
- 创建事件, 运行, 保持服务器不关闭