写了一个基于 uvloop 的 web 框架

2017-04-22 18:34:44 +08:00
 herozem

项目主页: https://github.com/jiajunhuang/storm

uvloop 真不是一般的快,用 APACHE BENCHMARK 跑分,其中 IOPS :

因为不喜欢 sanic 和 flask 这种函数形式的写法,相比更喜欢 web.py 这种 class 形式的写法,于是自己写了一个玩玩,示例代码为:

import logging

from storm.app import Application
from storm.handler import RequestHandler


class RootHandler(RequestHandler):
    def initialize(self):
        logging.debug("initialize been called")

    async def get(self):
        self.write({
            "hello": "world"
        })


handler_classes = [
    (r"/", RootHandler),
]

Application(
    handler_clses=handler_classes,
    debug=False,
).run()

代码整体上还处于雏形状态,很多影响性能的地方也没有做处理,目前的计划是:

1, 支持更完整的 HTTP 协议
2, 加入对模板的支持
3, 减少对象的消耗,提高性能,争取追平甚至超过 Sanic
4537 次点击
所在节点    分享创造
5 条回复
isombyt
2017-04-24 02:51:56 +08:00
flask: flask.views.MethodView 可以实现示例的功能

sanic: 跟 flask View 一样的原理,搭配 app.route(uri)(MethodView.as_view())也可以实现

不妨试试测下用这方法在 sanic 实现同样的功能的性能如何。另外, sanic 也是支持 uvloop 的。


如果铁了要造轮子硬刚 sanic 的心,只要能实现 WSGI 协议就可以爆 sanic 了。参见
https://github.com/channelcat/sanic/issues/250

IOPS 的跑分真的没有太大参考价值。
herozem
2017-04-24 09:26:24 +08:00
@isombyt 谢谢,上面的 sanic 是已经用上了 uvloop 的~
smdx
2017-04-24 10:28:43 +08:00
牛牛
crabRunning
2017-04-24 15:06:33 +08:00
先不说 python3.5 是一道无法逾越的坎
raytlty
2017-07-05 17:20:59 +08:00
大牛

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/356676

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX