Python项目实战:个人博客(1)

首先基于asyncio和aiohttp写一个app.py.

import logging 
logging.basicConfig(level = logging.INFO) #设定logging的打印等级是info等级,这样只有logging.info可以打印到终端
import asyncio,os,json,time
from datetime import datetime
from aiohttp import web
#这是一个handle函数,用来处理不同类型的url请求
def index(request):
    return web.Response(body = b'<h1>Hello</h1>')#Response的用法还不明白
@asyncio.coroutine
def init(loop):
#创建一个web.app的实例, event loop used for processing HTTP requests.
#文档:If param is None asyncio.get_event_loop() used for getting default event loop, but we strongly recommend to use explicit loops everywhere.
    app = web.Application(loop = loop)
    app.router.add_route('GET','/',index)#将index这个函数添加到app的处理函数里面,且指定响应的类型
    #make_handler() Creates HTTP protocol factory for handling requests.
    srv = yield from loop.create_server(app.make_handler(),'127.0.0.1',9000)#创建一个连接服务器的socket(异步?)
    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()#一直运行直到stop()被调用,因为是服务器所以要一直运行

你可能感兴趣的:(Python项目实战:个人博客(1))