一个快速超轻量级的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)