使用libevent实现wsgi server
这年头wsgi server满天飞,主流都是多进程+异步的形式,纯C实现的也不少。
libevent
是C语言的一个异步网络框架,有内置对http的支持,刚好拿来练手,于是就造了个轮子,C语言实现的wsgi server。源码在这里。
依赖libevent2和python2.7,在Ubuntu下只要
> sudo apt-get install python2.7-dev
> sudo apt-get install libevent-dev
即可满足依赖,目前只支持Python2.7。
将wsgi application的函数名命名为application,放在ngru路径下,命名为app.py,编译运行ngru,会在8000端口启动。目前这些配置都是写死在源码里的,下一步会增加对配置文件的支持。
框架方面测试了bottle
,跑起来没有太大问题,其他的就没有测试了。目前本博客就是跑在上面的。
代码部分很简单,初始化Python VM之后启动event loop,将所有http请求传给应用部分代码的wsgi函数,返回结果生成响应发送给客户端。
TODO:
- 多进程支持
- 配置文件
- 对于前端代理服务器保持连接
- 日志