Low Level Server¶
This topic describes
aiohttp.web based low level API.
Sometimes user don’t need high-level concepts introduced in Server: applications, routers, middlewares and signals.
All what is needed is supporting asynchronous callable which accepts a request and returns a response object.
Low level web handler should accept the single
parameter and performs one of the following actions:
Responsewith the whole HTTP body stored in memory.
HTTPExceptionderived exception (see Exceptions section).
All other exceptions not derived from
HTTPExceptionleads to 500 Internal Server Error response.
Run a Basic Low-Level Server¶
The following code demonstrates very trivial usage example:
import asyncio from aiohttp import web async def handler(request): return web.Response(text="OK") async def main(loop): server = web.Server(handler) await loop.create_server(server, "127.0.0.1", 8080) print("======= Serving on http://127.0.0.1:8080/ ======") # pause here for very long time by serving HTTP requests and # waiting for keyboard interruption await asyncio.sleep(100*3600) loop = asyncio.get_event_loop() try: loop.run_until_complete(main(loop)) except KeyboardInterrupt: pass loop.close()
In the snippet we have
handler which returns a regular
"OK" in BODY.
This handler is processed by
Server which acts
as protocol factory). Network communication is created by
loop.create_server call to serve
The handler should process every request for every path, e.g.
The example is very basic: it always return
200 OK response, real
life code is much more complex usually.