uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C.
The uWSGI project
The uWSGI project aims at developing a full stack for building (and hosting) clustered/distributed network applications.
Mainly targeted at the web and its standards, it has been successfully used in a lot of different contexts.
Thanks to its pluggable architecture it can be extended without limits to support more platforms and languages. Currently, you can write plugins in C, C++ and Objective-C.
The “WSGI” part in the name is a tribute to the namesake Python standard, as it has been the first developed plugin for the project.
Versatility, performance, low-resource usage and reliability are the strengths of the project (and the only rules followed).
The uwsgi Protocol
The uwsgi (lowercase!) protocol is the native protocol used by the uWSGI server.
It is a binary protocol that can carry any type of data. The first 4 bytes of a uwsgi packet describe the type of the data contained by the packet.
Every uwsgi request generates an response in the uwsgi format.
Even the web server handlers obey this rule, as an HTTP response is a valid uwsgi packet (look at the modifier1 = 72).
The protocol works mainly via TCP but the master process can bind to a UDP Unicast/Multicast for The embedded SNMP server or cluster management/messaging requests.