uWSGI 1.9.13¶
Changelog [20130622]
Bugfixes¶
Fixed a corner case bug when response offloading is enabled, but no request plugin is loaded
Fixed harakiri routing when multiple rules are in place (return NEXT instead of CONTINUE)
Fixed curl crashing master on slow dns responses (Łukasz Mierzwa)
Removed PTRACE check in uwsgi.h (it is no more needed since uWSGI 1.0)
Fixed –print-sym
Added a newline in –cflags
Improved python3 detection and compilation
Fixed Coro::AnyEvent loop engine (John Berthels)
Rack api functions are now static
Better fastcgi handling of big uploads
Improved GCC usage on Darwin for Python non-apple builds
Fixed XCLIENT usage in rawrouter
Use the clang preprocessor instead of hardcoded ‘cpp’ when CC=clang is used
Set 16bit options to 65535 when higher values are requested
Fixed virtualhosting (it is now compatible with 1.4 configurations)
New features¶
PyPy performance and features improvents¶
The PyPy plugin has been improved a lot. The amount of C code has been reduced by 70%, so, now, the vast majority of the plugin is written in python. The c helpers have been removed allowing the python part to directly call native uWSGI functions via cffi.
Support for PyPy continulets (and their greenlet abstraction) has been added (while waiting for a solid gevent port for pypy) and a chat example is already available (using the uwsgi async api):
https://github.com/unbit/uwsgi/tree/master/t/pypy
https://github.com/unbit/uwsgi/blob/master/contrib/pypy/uwsgi_pypy_greenlets.py
The pypy uwsgi api has been improved and now you can use the uwsgidecorators module (even if the spooler subsystem is still missing)
Chunked input api¶
In the last days there have been a bunch of discussions on how to correctly manage chunked input. As basically none of the available standards support it in a “definitive” way, we have defined a low-level api (so we can easily adapt it in the feature).
The api exposes two functions:
uwsgi.chunked_read()
and
uwsgi.chunked_read_nb()
A non blocking chat example:
import uwsgi
def application(e, sr):
while True:
uwsgi.wait_fd_read(uwsgi.connection_fd())
uwsgi.suspend()
msg = uwsgi.chunked_read_nb()
if msg: print "core %d" % e['uwsgi.core'], msg
Toward better third-party plugins management: the –dot-h option¶
As the –cflags option shows the CFLAGS used to build the server, the –dot-h option shows the content of uwsgi.h
This means the content of uwsgi.h is now embedded in the binary (compressed where available).
It could look a bizarre choice but the objective is to allow easy compilation of plugins out of the uwsgi sources (somethign that will be available in 2.0 for sure)
setmethod, seturi and setpathinfo routing action¶
we continue extending the routing api.
Three new actions have been added to dinamically modify the request
UWSGI_INCLUDES¶
You can now ovverride the include search path (while building uWSGI) with this environment variable.
Improved set_user_harakiri api function¶
Now the uwsgi.set_user_harakiri automatically recognize mules and spoolers. It has been added to the ruby/rack, pypy and perl/psgi plugins
–add-cache-item [cache ]KEY=VALUE¶
this is a commodity option (mainly useful for testing) allowing you to store an item in a uWSGI cache during startup
the router_xmldir plugin¶
This is a proof of concept plugin aimed at stressing the transformation api.
It basically generates an xml representation of a directory. This could be useful to implement apache-style directoryindex:
Check this example using xslt:
https://github.com/unbit/uwsgi/issues/271#issuecomment-19820204
Implement __call__ for @spool* decorators¶
Thanks to ‘anaconda’, you can now directly call functions mapped to the spooler, so instead of
myfunc.spool(args)
you can directly do:
myfunc(args)
the old way is obviously supported
the uwsgi[lq] routing var¶
this routing var exports the current size of the listen_queue:
[uwsgi]
...
route-if = higher:${uwsgi[lq]};70 break:503 Server Overload
...
–use-abort¶
On some system the SEGV signal handler cannot be correctly restored after the uWSGI backtrace.
If you want to generate a core file, you may want to trigger a SIGABRT soon after the backtrace.
Availability¶
uWSGI 1.9.13 will be available 22th June 2013 at this url: