Python

基 于aiohttp写一个异步高并发的web服务器

2018-11-30  本文已影响50人  hugoren

简易版的http websocket

from aiohttp import web
import asyncio


async def index(req):
    return web.json_response(data={"retcode": 0, "stderr":"index"}, status=200)

async def wshandle(request):
    ws = web.WebSocketResponse()
    await ws.prepare(request)

    async for msg in ws:
        if msg.type == web.WSMsgType.text:
            await ws.send_str("Hello, {}".format(msg.data))
        elif msg.type == web.WSMsgType.binary:
            await ws.send_bytes(msg.data)
        elif msg.type == web.WSMsgType.close:
            break

    return ws

async def init(loop_event):
    app = web.Application(loop=loop_event)
    app.router.add_route('GET', '/', index)
    server = await loop.create_server(app.make_handler(), '127.0.0.1', 13000)  # 创建Http服务
    print('Server started at http://127.0.0.1:13000...')
    return server


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(init(loop))
    loop.run_forever()
image.png

复杂点,加上token认证,队列.....

不过对于提供 简单http服务器,相对于django , flask , sanic 等来说,这是比较精简且高性能的。

上一篇 下一篇

猜你喜欢

热点阅读