Skip to content
/ bjoern Public
forked from jonashaag/bjoern

A screamingly fast Python WSGI server written in C.

License

Notifications You must be signed in to change notification settings

kkris/bjoern

 
 

Repository files navigation

bjoern: Fast And Ultra-Lightweight Asynchronous WSGI Server

A screamingly fast, ultra-lightweight asynchronous WSGI server for CPython, written in C using Marc Lehmann's high performance libev event loop and Ryan Dahl's http_parser.

Why It's Cool

bjoern is the fastest, smallest and most lightweight WSGI server out there, featuring

  • < 1000 lines of code
  • Memory footprint ~ 600KB
  • Single-threaded and without coroutines or other crap
  • 100% WSGI compliance (except for the write callback design mistake)

What's Not So Cool

  • Not HTTP/1.1 capable (yet).

Installation

libev

Arch Linux
pacman -S libev
Ubuntu
apt-get install libev-dev
Mac OS X (using homebrew)
brew install libev
Your Contribution Here
Fork me and send a pull request

bjoern

Make sure libev is installed and then:

pip install bjoern

Usage

bjoern.run(wsgi_application, host, port)

Alternatively, the mainloop can be run separately:

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

But What About...

Sucks. Really, the code is an incredible mess. It likes to segfault.

I tried to patch Fapws so that it would support threading, but after about two hours of brain slime feeling, I decided to write my own WSGI server -- "Fapws done right".

bjoern is about 5 times faster. Plus gunicorn is too much bloated.

Awesome project, but way too much bloat.

Unfortunately now bloated with gunicorn and coroutine/greenlet crap, seemed to be a very nice server at first.

$SERVER?

Probably too much bloat, too slow, does not scale, buggy, ...

About

A screamingly fast Python WSGI server written in C.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 82.7%
  • Python 17.3%