开源一个自己用 Python3 写的 web server,求围观求拍砖

2015-05-12 15:52:10 +08:00
 lazywen
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
4957 次点击
所在节点    Python
13 条回复
yuewolf
2015-05-12 15:57:45 +08:00
还在学 Python 2 的飘过一下。

楼主帮帮哒
woshifyz
2015-05-12 16:31:24 +08:00
赞一个,我自己偶尔会用用tornado
lazywen
2015-05-12 16:31:49 +08:00
@yuewolf 感谢支持,其实学会2就相当于学会3了
ca1n
2015-05-12 16:38:29 +08:00
支持一下
lazywen
2015-05-12 17:40:22 +08:00
@woshifyz
@ca1n 感谢😘
tonyluj
2015-05-12 18:44:14 +08:00
赞一下,一直想用python wrap一下epoll
LZ有没有尝试过asyncio
magicdawn
2015-05-12 19:06:22 +08:00
已送star,虽然不玩python
ychongsaytc
2015-05-12 20:45:29 +08:00
支持楼主,已送 star。
有个问题就是,代码注释好少
lazywen
2015-05-12 21:17:57 +08:00
@tonyluj asyncio底层也是系统事件驱动,实现方法差不多效率应该都差不多的
lazywen
2015-05-12 21:20:36 +08:00
@ychongsaytc 是的,我会在后面的提交里多写注释😁
laike9m
2015-05-12 22:31:06 +08:00
支持一个。看了下源码感觉就是简化版 Tornado。
mingyun
2015-05-12 22:35:22 +08:00
python2刚入门
lazywen
2015-05-12 23:17:55 +08:00
@laike9m 有些地方是模仿了tornado,再看看会发现有些地方模仿了bottle和twisted,WSGI还模仿了标准库wsgiref,其实就是吸取了各个框架的一些个人觉得不错的东西,然后揉和了在一起,哈哈

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

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

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

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

© 2021 V2EX