Feature list:
Current core features are
- written totally in C
- very fast (and simple) communication protocol for webservers integration (apache2, nginx, cherokee and lighttpd modules available)
- low memory footprint (thanks to the evil premature optimizations)
- support for multiple application in the same process/domain
- a master process manager that will allows you to automatically respawn processes and monitor the stack status
- preforking mode to improve concurrency
- address space and rss usage reports
- advanced logging (even networked, see UdpLogging)
- static file serving via sendfile() (where available)
- portability (tested on Linux 2.6, Solaris/OpenSolaris, OpenBSD, NetBSD, DragonflyBSD, FreeBSD, MacOSX and Haiku)
- support for funny architectures like SPARC64 or ARM
- support for threads (configurable, available from 0.9.7-dev)
- cgi mode for lazy users or ugly webservers (example cgi included here and here)
- harakiri mode for self-healing
- vector based I/O to minimize syscall usage
- hot-add of applications. See DynamicApps
- on the-fly configuration parameters. See ManagementFlag
- big (professional) user-base (hundreds of production ready wsgi apps) thanks to its main development managed by the Italian ISP Unbit
- commercial support available (contact Unbit for informations)
- all code is under GPL2 (but you can buy a commercial license if you want to modify it without releasing source code)
- configurable buffer size for low-memory system or to manage big requests
- customizable builds (you can remove unneeded functionality)
- intelligent worker respawner wih no-fork-bombing policy
- limit requests per worker
- process reaper for external process managers (as daemontools). Avoids zombie workers.
- Per-request modifier for advanced users (See RunOnNginx for an example usage, and uwsgiProtocol for the modifiers list)
- UNIX and TCP socket support
- Graceful restart of worker processes and hot-plug substitution/upgrade of the uWSGI server using Signals. See uWSGIReload
- A shared memory area to share data between workers/processes. See SharedArea
- An integrated Spooler for managing long running task.
- Message exchanging (via uwsgi protocol) for easy-implementation of distributed applications (look at ClusteredExamples)
- Get statistics of all the workers using the EmbeddedModule
- Integrated Async/Evented Proxy for load-balancing and healtchecking of big clusters (from version 0.9.5)
- Address space usage limiting (from version 0.9.5)
- integrated SNMP agent and nagios-friendly output (from version 0.9.5) See UseSnmp
- VirtualHosting mode (from version 0.9.6)
- Embedded threaded HTTP server for easy development and testing (from version 0.9.6)
TODO/Working on
- integrated support for wsgi middleware (is it really useful ?)
- put some more code comments to gather external developers ;)
- better anti-fork bombing policy (lesser dumb)
- advanced conditional logging (already available in 0.9.6.5, more to come in 0.9.7)
- Linux cgroups integration (work already started in 0.9.7-dev) see UseCgroups
- SSL support (with certificate client authentication) to allow remote management of the uWSGI stack
- support for multiple listening sockets (already available in mercurial repository, simply add more --socket options)
- Web3 (PEP-444) (already available in mercurial repository)
- IPv6 support (targeted at 0.9.7 release)
- SCTP support (experimental support is in 0.9.5 trunk, but no performance gain, still hard work needed)
- Event Dispatcher (execute callable on external events like file changes, bonjour/avahi/dnssd message, timers...) (work started in 0.9.6-dev, targeted at 0.9.7)
- hash table over SharedArea (for ultra-fast integrated caching)
- AIX, Hurd, MorphOS support (targeted at 0.9.7)
- Better Rack/RubyOnRails plugin
- Async Mode optimizations (work already started in 0.9.7-dev)
- Threading mode support (already available in mercurial repository, simply add --threads <N> to spawn N thread cores)
- fully pluginize python support to make a total language agnostic server (main feature of 0.9.7 release)
- Move embedded http server from threads to evented
- Add Message Queuing system (with publish/subscribe) on top of the Spooler (and export it via STOMP protocol to third party software)
On 01/12/2010 15:26, Javier Guerra Giraldez wrote:
On Wed, Dec 1, 2010 at 6:43 AM, ashdesigner <antony.shashkin@gmail.com> wrote:The only undiscovered issue to us is whether we can launch a heavy loaded website in Django under Windows (IIS) + MSSQL. Would appreciate any comment please.a WSGI plugin for IIS would be the best answer; but there's nothing wrong with FastCGI. properly managed can sustain as high load as anybody else. unfortunately, the most common FastCGI->WSGI adapter (flup) is quite good and performant; but limited in terms of dynamic process/thread lifetime managing. a more 'modern' approach could be gunicorn or Tornado. since both of them handle HTTP->WSGI, your IIS frontend would have to proxy those requests, but i guess that's a standard feature of any webserver
No comments:
Post a Comment