Graily是一个用Python3写的单文件web server和简单微型web框架。目前只支持Linux(没做兼容)。
为什么要造轮子?
起初是为了需求做了个epoll的socket长连接队列服务,后来为了学习HTTP协议就尝试写了个协议的解析,过了半年突发奇想可以用之前写的服务的模块来做server,然后就结合在了一起。压力测试后效果不错,后来又突发奇想在一个外包项目里尝试了这个web server,结果遇到了各种bug,各种修改后运行还蛮稳定。所以造这个轮子其实就是学习的过程。
为什么要开源?
有的地方写的太乱或者太简单,整理后本来也不好意思拿出来,但想想这本来就是个简易的server,如果有新手不想看其它庞大的server或框架,可以看看只有1000多行的Graily,麻雀虽小却五脏具全,各种处理也都大概涉及到了,如果新手想自己写一个框架也提供了一个思路,能提交一些bug更好啦。还有个原因就是本人没有开源过什么东西,而这个web server现在跑的还算稳定,也算一个作品了。然后我就想了Graily这个名字,加上了WSGI支持(没有WSGI支持也不好意思说是个web server)。总的来说开源的主要目的也是为了学习(欢迎拍砖哈)。
为什么有的地方设计得太微型了?
比如URL路由就只简单用了正则匹配,也没做防攻击处理,template也很简单(template只支持变量替换和单行的if else操作和列表解析的写法)。由于是epoll驱动的,这个东西的强项在于socket长连接、HTTP长连接,要用到生产中如果有些东西不想写的话可以用其他框架在上层(WSGI就是干这个用的),然后Graily做server,毕竟性能还不错(性能比其他Python框架好很多的原因就是太微型了吧)。
最后求围观求拍砖。
地址:
https://github.com/lazywen/graily最后附上 Hello, world :
https://gist.github.com/lazywen/8cf4ac47de3d63442f50.js
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/190465
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.