一个快速超轻量级的HTTP/1.1 WSGI服务器:bjoern

jopen 10年前

简介

bjoern是一个用C语言编写的,快速超轻量级的 Python WSGI服务器。

为什么说它很酷

bjoern是最快速的,最小的并且是最轻量级的WSGI服务器。有以下特性:

  • 1000 行的C代码
  • 占用内存 600KB
  • 单线程没有其他协同程序
  • 可以绑定到TCP主机:端口地址和Unix套接字
  • 支持HTTP1.0/1.1,包含支持HTTP1.1的分块响应

安装

libev

Arch Linux

pacman -S libev

Ubuntu

apt-get install libev-dev

Fedora, CentOS

yum install libev-devel

Mac OS X (使用homebrew)

brew install libev

bjoern

对大多数用户,最简单的安装bjoern的方式是使用pip。确定libev已经安装后:

pip install bjoern

也可使用setup.py文件直接安装bjoern:

python setup.py install

对于一些Linux系统(尤其是Fedora和CentOS),该libdev头可能安装到默认路径以为。为了构建bjoern,当运行setup.py时,需要输出CFLAGS,例如:

CFLAGS=-I/usr/include/libev python setup.py install

用法

# Bind to TCP host/port pair:  bjoern.run(wsgi_application, host, port)    # TCP host/port pair, enabling SO_REUSEPORT if available.  bjoern.run(wsgi_application, host, port, reuseport=True)    # Bind to Unix socket:  bjoern.run(wsgi_application, 'unix:/path/to/socket')    # Bind to abstract Unix socket: (Linux only)  bjoern.run(wsgi_application, 'unix:@socket_name')

另外, 主循环可以单独运行:

bjoern.listen(wsgi_application, host, port)  bjoern.run()

你也可以简单的传递一个Python socket对象。注意,这时你要负责初始化和清除该socket。

bjoern.server_run(socket_object, wsgi_application)  bjoern.server_run(filedescriptor_as_integer, wsgi_application)

项目主页:http://www.open-open.com/lib/view/home/1402636380962