使用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:

  • 多进程支持
  • 配置文件
  • 对于前端代理服务器保持连接
  • 日志