aiohttp模块的web.Application()方法是搭建WebApp的核心
async def init(loop): await www.orm.create_pool(loop=loop, host='127.0.0.1', port=3306, user='root', password='password', db='awesome') app = web.Application(loop=loop, middlewares=[ logger_factory, response_factory ]) init_jinja2(app, filters=dict(datetime=datetime_filter)) add_routes(app, 'handlers') add_static(app) 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可以看出,
app = web.Application(loop=loop, middlewares=[ logger_factory, response_factory ])
一、接受的参数
Parameters: |
|
---|
middlewares:中间件,接受一列中间件工厂。aiohttp.web提供了一个强大的机制来通过中间件来定制请求处理程序。
中间件是可以修改请求或响应的协程。每个中间件都应该接受两个参数,一个请求实例和一个处理程序,并返回响应或引发异常。 如果该异常不是HTTPException的一个实例,则在处理中间件链之后它将转换为500 HTTPInternalServerError。
中间件函数应该像这样 :
from aiohttp.web import middleware @middleware async def middleware(request, handler): resp = await handler(request) resp.text = resp.text + ' wink' return resp
middleware的使用应该像这样:
app = web.Application(middlewares=[middleware_1,
middleware_2])
cilent_max_size:客户端请求中的最大大小,以字节为单位。 如果POST请求超过此值,则会引发HTTPRequestEntityTooLarge异常。
handler_args:类似于dict的对象,覆盖Application.make_handler()的关键字参数
二、干了啥和返回啥
****************************************************************************************************************************
返回一个对象(一般叫app)