廖雪峰教程之学习笔记_webapp实战项目_aiohttp.web.Application()的使用

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:
  • logger –

    logging.Logger instance for storing application logs.

    By default the value is logging.getLogger("aiohttp.web")

  • router –
    aiohttp.abc.AbstractRouter instance, the system
    creates UrlDispatcher by default if router is None.

    Deprecated since version 3.3: The custom routers support is deprecated, the parameter will be removed in 4.0.

  • middlewares – list of middleware factories, see Middlewares for details.
  • handler_args – dict-like object that overrides keyword arguments ofApplication.make_handler()
  • client_max_size – client’s maximum size in a request, in bytes. If a POST request exceeds this value, it raises anHTTPRequestEntityTooLarge exception.
  • loop –

    event loop

    Deprecated since version 2.0: The parameter is deprecated. Loop is get set during freeze stage.

  • debug – Switches debug mode.
loop:循环,接受一个EventLoop(事件循环),可以通过 loop = asyncio.get_event_loop()获得。
logger:instance for storing application logs。接受logging.logger
router:路由器

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)

猜你喜欢

转载自blog.csdn.net/bird333/article/details/80658172
今日推荐