uWSGI 2.0.27__tar.gz → 2.0.29__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {uwsgi-2.0.27 → uwsgi-2.0.29}/.github/workflows/compile-test.yml +1 -7
- {uwsgi-2.0.27 → uwsgi-2.0.29}/.github/workflows/test.yml +10 -9
- {uwsgi-2.0.27 → uwsgi-2.0.29}/Makefile +2 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/PKG-INFO +1 -1
- uwsgi-2.0.29/buildconf/integration-tests.ini +4 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/emperormon.ru +4 -4
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/graphite_uwsgi.py +1 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/pypy/uwsgi_pypy_greenlets.py +7 -4
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/pyuwsgi.py +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/runuwsgi.py +6 -5
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/spoolqueue/producer.py +2 -3
- uwsgi-2.0.29/contrib/spoolqueue/tasks.py +13 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/spoolqueue/tasksconsumer.py +19 -17
- uwsgi-2.0.29/contrib/twuwsgi.py +118 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/uwsgi-cache-monitor.py +50 -26
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/uwsgisubscribers.ru +4 -4
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/emperor.c +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/fifo.c +24 -24
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/init.c +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/master_utils.c +1 -7
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/reader.c +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/signal.c +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/spooler.c +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/utils.c +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/uwsgi.c +11 -2
- uwsgi-2.0.29/examples/bootstrap5.py +3 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/flaskpost.py +2 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/heavytest.py +7 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/info_uwsgi.php +1 -1
- uwsgi-2.0.29/examples/mjpeg_stream.py +24 -0
- uwsgi-2.0.29/examples/multiapp.py +30 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/simple_app.py +7 -7
- uwsgi-2.0.29/examples/simple_app_wsgi2.py +10 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/simple_logger.py +2 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/staticfilesnmp.py +3 -2
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/taskqueue.py +9 -6
- uwsgi-2.0.29/examples/uwsgirouter.py +76 -0
- uwsgi-2.0.29/examples/uwsgirouter2.py +8 -0
- uwsgi-2.0.29/examples/uwsgirouter3.py +26 -0
- uwsgi-2.0.29/examples/uwsgirouter4.py +15 -0
- uwsgi-2.0.29/examples/uwsgirouter5.py +10 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/uwsgistatus.py +9 -9
- uwsgi-2.0.29/examples/welcome.py +167 -0
- uwsgi-2.0.29/examples/welcome3.py +62 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/fiber/fiber.c +2 -2
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/pypy/pypy_plugin.c +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/pypy/pypy_setup.py +209 -160
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/pyloader.c +18 -6
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/uwsgiplugin.py +13 -8
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rack/rack_plugin.c +14 -10
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/cachebitmap.py +27 -16
- uwsgi-2.0.29/t/cachetest.py +35 -0
- uwsgi-2.0.29/t/cgi/hello.cgi +6 -0
- uwsgi-2.0.29/t/core/readline/app.py +16 -0
- uwsgi-2.0.29/t/core/readline/client.py +8 -0
- uwsgi-2.0.29/t/core/readline/requirements.txt +2 -0
- uwsgi-2.0.29/t/cron.ini +3 -0
- uwsgi-2.0.29/t/perl/apps/body-types.psgi +43 -0
- uwsgi-2.0.29/t/perl/apps/env.psgi +10 -0
- uwsgi-2.0.29/t/perl/body-types.t +57 -0
- uwsgi-2.0.29/t/perl/env.t +79 -0
- uwsgi-2.0.29/t/perl/run +48 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/perl/test_harakiri.psgi +6 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/perl/test_post.psgi +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/php/config.ini +1 -1
- uwsgi-2.0.29/t/php/test.php +23 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/pypy/config.ini +2 -2
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/pypy/t_continulet1.py +6 -4
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/pypy/t_continulet2.py +7 -5
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/python/manage_script_name/manage_script_name_test.ini +0 -4
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/python/manage_script_name/useless_app.py +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/python/spooler_decorators/spooler_decorator_test.ini +3 -2
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/python/spooler_decorators/spooler_handlers.py +1 -1
- uwsgi-2.0.29/t/python/spooler_handler.py +34 -0
- uwsgi-2.0.29/t/python/spooler_priority/spooler_priority_constants.py +22 -0
- uwsgi-2.0.29/t/python/spooler_priority/spooler_priority_handler.py +33 -0
- uwsgi-2.0.29/t/python/spooler_priority/spooler_priority_test.ini +17 -0
- uwsgi-2.0.29/t/python/spooler_priority/spooler_priority_test.py +81 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/python/testba.py +4 -2
- uwsgi-2.0.29/t/python/testmultipleenv.py +12 -0
- uwsgi-2.0.29/t/python/timers.py +6 -0
- uwsgi-2.0.29/t/python/wsgi_chunked.py +16 -0
- uwsgi-2.0.29/t/rack/app.ru +9 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/ring/src/uwsgi/ring/tests/body.clj +1 -1
- uwsgi-2.0.29/t/runner +258 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/sharedarea/bigranges.py +2 -2
- uwsgi-2.0.29/t/spooler/cheap.py +21 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/static/config.ini +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/Responder.pm +1 -1
- uwsgi-2.0.29/tests/__init__.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/badthread.py +2 -2
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/badwrites.py +3 -3
- uwsgi-2.0.29/tests/cpubound_async.py +7 -0
- uwsgi-2.0.29/tests/cpubound_green.py +16 -0
- uwsgi-2.0.29/tests/cpubound_stackless.py +14 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/decoratortest.py +26 -10
- uwsgi-2.0.29/tests/else_test.ini +18 -0
- uwsgi-2.0.29/tests/fileserve_async.py +17 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/gevent_spool.py +6 -2
- uwsgi-2.0.29/tests/grunter.py +24 -0
- uwsgi-2.0.29/tests/iobound_async.py +43 -0
- uwsgi-2.0.29/tests/iobound_async_unix.py +51 -0
- uwsgi-2.0.29/tests/iobound_green.py +42 -0
- uwsgi-2.0.29/tests/logger.py +12 -0
- uwsgi-2.0.29/tests/mako_ugreen.py +18 -0
- uwsgi-2.0.29/tests/mule_file.py +3 -0
- uwsgi-2.0.29/tests/mulefunc.py +29 -0
- uwsgi-2.0.29/tests/myadmin.py +16 -0
- uwsgi-2.0.29/tests/pgbound_async.py +39 -0
- uwsgi-2.0.29/tests/picazzo.py +26 -0
- uwsgi-2.0.29/tests/psycogreen_green.py +45 -0
- uwsgi-2.0.29/tests/psycopg2_green.py +52 -0
- uwsgi-2.0.29/tests/pump.py +12 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/queue.py +9 -5
- uwsgi-2.0.29/tests/refcount.py +7 -0
- uwsgi-2.0.29/tests/rpc.py +10 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/runningthread.py +2 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/sendchunked.py +4 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/sharedarea.py +2 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/signals.py +13 -10
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/sigwait.py +3 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/sleeping_async.py +2 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/sleeping_green.py +2 -2
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/sleepthreadasync.py +7 -5
- uwsgi-2.0.29/tests/slow.py +13 -0
- uwsgi-2.0.29/tests/spooler_dir.py +10 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/spoolme.py +9 -3
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/staticfile.py +4 -4
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/testapp.py +63 -39
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/testgevent.py +9 -6
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/testpy3.py +4 -2
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/testsignals.py +2 -2
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/testworkers.py +5 -2
- uwsgi-2.0.29/tests/threads.py +41 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/travis.sh +2 -9
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/ugevent.py +19 -13
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/websockets.py +16 -15
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/websockets_chat.pl +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/websockets_chat.py +17 -16
- uwsgi-2.0.29/tests/websockets_chat_2.py +145 -0
- uwsgi-2.0.29/tests/websockets_chat_async.lua +108 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/websockets_chat_async.py +15 -14
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/websockets_chat_asyncio.py +25 -19
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/websockets_echo.py +8 -7
- uwsgi-2.0.29/tests/werkzeug_app.py +5 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/uwsgi.gemspec +1 -1
- {uwsgi-2.0.27 → uwsgi-2.0.29}/uwsgi.h +3 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/uwsgiconfig.py +5 -5
- uwsgi-2.0.27/buildconf/integration-tests.ini +0 -4
- uwsgi-2.0.27/contrib/spoolqueue/tasks.py +0 -9
- uwsgi-2.0.27/contrib/twuwsgi.py +0 -119
- uwsgi-2.0.27/examples/bootstrap5.py +0 -3
- uwsgi-2.0.27/examples/mjpeg_stream.py +0 -25
- uwsgi-2.0.27/examples/multiapp.py +0 -22
- uwsgi-2.0.27/examples/simple_app_wsgi2.py +0 -9
- uwsgi-2.0.27/examples/uwsgirouter.py +0 -78
- uwsgi-2.0.27/examples/uwsgirouter2.py +0 -8
- uwsgi-2.0.27/examples/uwsgirouter3.py +0 -25
- uwsgi-2.0.27/examples/uwsgirouter4.py +0 -14
- uwsgi-2.0.27/examples/uwsgirouter5.py +0 -9
- uwsgi-2.0.27/examples/welcome.py +0 -135
- uwsgi-2.0.27/examples/welcome3.py +0 -47
- uwsgi-2.0.27/t/cachetest.py +0 -33
- uwsgi-2.0.27/t/python/manage_script_name/test_manage_script_name.py +0 -59
- uwsgi-2.0.27/t/runner +0 -144
- uwsgi-2.0.27/tests/cpubound_async.py +0 -6
- uwsgi-2.0.27/tests/cpubound_green.py +0 -15
- uwsgi-2.0.27/tests/cpubound_stackless.py +0 -14
- uwsgi-2.0.27/tests/fileserve_async.py +0 -17
- uwsgi-2.0.27/tests/grunter.py +0 -22
- uwsgi-2.0.27/tests/iobound_async.py +0 -43
- uwsgi-2.0.27/tests/iobound_async_unix.py +0 -51
- uwsgi-2.0.27/tests/iobound_green.py +0 -41
- uwsgi-2.0.27/tests/logger.py +0 -11
- uwsgi-2.0.27/tests/mako_ugreen.py +0 -19
- uwsgi-2.0.27/tests/mulefunc.py +0 -27
- uwsgi-2.0.27/tests/myadmin.py +0 -17
- uwsgi-2.0.27/tests/pgbound_async.py +0 -38
- uwsgi-2.0.27/tests/picazzo.py +0 -22
- uwsgi-2.0.27/tests/psycogreen_green.py +0 -45
- uwsgi-2.0.27/tests/psycopg2_green.py +0 -53
- uwsgi-2.0.27/tests/pump.py +0 -7
- uwsgi-2.0.27/tests/refcount.py +0 -6
- uwsgi-2.0.27/tests/rpc.py +0 -10
- uwsgi-2.0.27/tests/slow.py +0 -12
- uwsgi-2.0.27/tests/testyieldnone.py +0 -13
- uwsgi-2.0.27/tests/threads.py +0 -34
- uwsgi-2.0.27/tests/werkzeug_app.py +0 -5
- {uwsgi-2.0.27 → uwsgi-2.0.29}/.gitignore +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/CONTRIBUTORS +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/INSTALL +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/LICENSE +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/README +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/apache2/mod_Ruwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/apache2/mod_proxy_uwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/apache2/mod_uwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/attach.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/bin/uwsgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/all.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/asyncio.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/base.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/cgi.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/core.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/coroae.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/coverity.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/default.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/django.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/embedded.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/erlang.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/gccgo.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/gevent.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/glusterfs.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/gridfs.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/jwsgi.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/lib.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/lua.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/luap.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/minimal.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/modular.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/mono.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/nolang.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/package.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/php.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/plonly.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/ppa.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/psgi.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/pyerl.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/pylua.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/pyonly.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/pypy.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/pypyonly.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/pyring.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/pyuwsgi.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/pyuwsginossl.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/rack.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/rados.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/rbonly.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/ring.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/ruby2.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/servlet.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/travis.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/unbit.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/unbitstaff.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/unittest.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/uwsgi.it.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/buildconf/v8.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/Uwsgi.pm +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/binder.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/centos_init_script +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/cgi_python.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/cryptologger.rb +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/fdconf.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/launchd/it.unbit.uwsgi.emperor.plist +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/launchd/it.unbit.uwsgi.plist +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/loadapp.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/securesubscribe.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/subscribe.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/upstart/emperor.conf +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/upstart/uwsgi.conf +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/upython +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/urack.rb +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/uwsgi.erl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/uwsgi.java +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/uwsgi.rb +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/uwsgi_client.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/uwsgi_dynamic_client.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/contrib/xinetd_uwsgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/alarm.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/async.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/buffer.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/cache.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/chunked.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/clang_fake.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/clock.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/config.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/cookie.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/cron.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/daemons.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/errors.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/event.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/exceptions.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/fsmon.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/gateway.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/hash.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/hooks.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/ini.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/io.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/json.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/legion.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/lock.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/logging. +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/logging.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/loop.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/master.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/master_checks.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/master_events.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/metrics.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/mount.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/mule.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/notify.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/offload.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/plugins.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/plugins_builder.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/progress.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/protocol.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/querystring.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/queue.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/rb_timers.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/regexp.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/routing.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/rpc.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/sendfile.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/setup_utils.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/sharedarea.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/skel.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/snmp.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/socket.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/ssl.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/static.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/stats.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/storage.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/strings.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/subscription.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/timebomb.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/transformations.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/websockets.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/writer.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/xmlconf.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/yaml.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/zeus.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/core/zlib.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/bootstrap.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/bootstrap2.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/bootstrap3.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/bootstrap4.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/config.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/config.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/config17.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/config2.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/config2.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/config30.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/corostream.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/debug.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/fibers.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/fibers.yml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/heavytest.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/logic.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/mega.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/mojoapp.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/multi.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/multi.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/protected.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/router.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/sites.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/sputnik.ws +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/uwsgi.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/welcome.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/werkzeug.js +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/werkzeug.yml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/werkzeug_strict.yml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/xmlindex-html.xsl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/xmlindex.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/examples/zmqgevent.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/ext/uwsgi/extconf.rb +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/install.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/lib/linux_ns.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/lib/netlink.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/lib/sun_fixes.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/logo_uWSGI.png +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/logo_uWSGI.svg +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/mongrel2-uwsgi.conf +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/airbrake/airbrake_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/airbrake/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/alarm_curl/alarm_curl_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/alarm_curl/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/alarm_speech/alarm_speech.m +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/alarm_speech/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/alarm_xmpp/alarm_xmpp_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/alarm_xmpp/gloox.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/alarm_xmpp/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/asyncio/asyncio.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/asyncio/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/cache/cache.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/cache/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/carbon/carbon.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/carbon/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/cgi/cgi_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/cgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/cheaper_backlog2/cheaper_backlog2.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/cheaper_backlog2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/cheaper_busyness/cheaper_busyness.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/cheaper_busyness/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/clock_monotonic/clock_monotonic.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/clock_monotonic/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/clock_realtime/clock_realtime.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/clock_realtime/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/corerouter/corerouter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/corerouter/cr.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/corerouter/cr_common.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/corerouter/cr_map.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/corerouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/coroae/coroae.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/coroae/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/cplusplus/base.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/cplusplus/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/cplusplus/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/curl_cron/curl_cron.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/curl_cron/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/dumbloop/dumb.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/dumbloop/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/dummy/dummy.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/dummy/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/echo/echo_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/echo/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/emperor_amqp/amqp.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/emperor_amqp/emperor_amqp.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/emperor_amqp/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/emperor_mongodb/emperor_mongodb.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/emperor_mongodb/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/emperor_mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/emperor_pg/emperor_pg.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/emperor_pg/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/emperor_zeromq/emperor_zeromq.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/emperor_zeromq/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/example/example_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/example/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/exception_log/exception_log.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/exception_log/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/fastrouter/fastrouter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/fastrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/fiber/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/forkptyrouter/forkptyrouter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/forkptyrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/gccgo/gccgo_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/gccgo/uwsgi.go +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/gccgo/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/geoip/geoip.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/geoip/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/gevent/gevent.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/gevent/gevent.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/gevent/hooks.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/gevent/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/glusterfs/glusterfs.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/glusterfs/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/graylog2/graylog2_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/graylog2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/greenlet/greenlet.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/greenlet/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/gridfs/gridfs.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/gridfs/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/gridfs/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/http/common.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/http/http.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/http/https.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/http/keepalive.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/http/spdy3.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/http/spdy3.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/http/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/jvm/jvm.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/jvm/jvm_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/jvm/uwsgi.java +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/jvm/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/jwsgi/jwsgi_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/jwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/ldap/ldap.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/ldap/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/legion_cache_fetch/legion_cache_fetch.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/legion_cache_fetch/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/libffi/libffi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/libffi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/libtcc/libtcc.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/libtcc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/logcrypto/logcrypto.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/logcrypto/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/logfile/logfile.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/logfile/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/logpipe/logpipe.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/logpipe/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/logsocket/logsocket_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/logsocket/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/logzmq/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/logzmq/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/lua/lua_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/lua/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/matheval/math.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/matheval/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/mongodb/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/mongodblog/mongodblog_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/mongodblog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/mongrel2/mongrel2.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/mongrel2/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/mono/mono_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/mono/uwsgi.cs +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/mono/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/msgpack/msgpack.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/msgpack/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/nagios/nagios.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/nagios/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/notfound/notfound.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/notfound/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/objc_gc/objc_gc.m +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/objc_gc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/pam/pam.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/pam/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/php/common.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/php/php_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/php/session.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/php/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/ping/ping_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/ping/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/psgi/psgi.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/psgi/psgi_loader.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/psgi/psgi_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/psgi/psgi_response.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/psgi/uwsgi_plmodule.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/psgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/pty/pty.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/pty/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/pypy/README +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/pypy/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/gil.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/profiler.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/pump_subhandler.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/python_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/pyutils.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/raw.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/symimporter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/tracebacker.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/uwsgi_pymodule.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/uwsgi_python.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/web3_subhandler.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/wsgi_handlers.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/wsgi_headers.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/python/wsgi_subhandler.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/pyuwsgi/pyuwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/pyuwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rack/rack_api.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rack/uwsgi_rack.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rack/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rados/rados.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rados/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rawrouter/rawrouter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rawrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rbthreads/rbthreads.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rbthreads/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/redislog/redislog_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/redislog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/ring/ring_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/ring/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_access/router_access.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_access/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_basicauth/router_basicauth.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_basicauth/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_cache/router_cache.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_cache/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_expires/expires.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_expires/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_hash/router_hash.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_hash/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_http/router_http.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_http/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_memcached/router_memcached.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_memcached/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_metrics/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_metrics/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_radius/radius.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_radius/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_redirect/router_redirect.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_redirect/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_redis/router_redis.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_redis/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_rewrite/router_rewrite.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_rewrite/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_spnego/router_spnego.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_spnego/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_static/router_static.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_static/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_uwsgi/router_uwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_uwsgi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_xmldir/router_xmldir.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/router_xmldir/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rpc/rpc_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rpc/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rrdtool/rrdtool.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rrdtool/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rsyslog/rsyslog_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/rsyslog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/ruby19/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/servlet/servlet_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/servlet/uwsgi_servlet.java +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/servlet/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/signal/signal_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/signal/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/spooler/spooler_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/spooler/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/sqlite3/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/sqlite3/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/ssi/ssi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/ssi/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/sslrouter/sslrouter.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/sslrouter/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/stackless/stackless.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/stackless/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/stats_pusher_file/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/stats_pusher_file/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/stats_pusher_mongodb/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/stats_pusher_mongodb/stats_pusher_mongodb.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/stats_pusher_mongodb/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/stats_pusher_socket/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/stats_pusher_socket/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/stats_pusher_statsd/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/stats_pusher_statsd/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/symcall/symcall_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/symcall/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/syslog/syslog_plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/syslog/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/systemd_logger/systemd_logger.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/systemd_logger/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/tornado/tornado.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/tornado/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_chunked/chunked.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_chunked/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_gzip/gzip.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_gzip/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_offload/offload.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_offload/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_template/tt.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_template/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_tofile/tofile.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_tofile/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_toupper/toupper.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/transformation_toupper/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/tuntap/common.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/tuntap/common.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/tuntap/firewall.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/tuntap/tuntap.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/tuntap/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/ugreen/ugreen.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/ugreen/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/v8/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/v8/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/v8/v8_commonjs.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/v8/v8_jsgi.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/v8/v8_uwsgi.cc +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/v8/v8_uwsgi.h +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/webdav/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/webdav/webdav.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/xattr/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/xattr/xattr.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/xslt/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/xslt/xslt.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/zabbix/plugin.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/zabbix/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/zergpool/uwsgiplugin.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/plugins/zergpool/zergpool.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/proto/BUILD +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/proto/base.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/proto/fastcgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/proto/http.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/proto/puwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/proto/scgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/proto/uwsgi.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/setup.cpyext.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/setup.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/setup.pyuwsgi.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/cachebitmap.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/clojure/myapp.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/core/apps/read_body_and_send.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/core/read_body_and_send.pl +0 -0
- {uwsgi-2.0.27/tests → uwsgi-2.0.29/t/core/readline}/__init__.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/core/url_sanitize.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/go/cachetest.go +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/go/complextest.go +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/go/uploadtest.go +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/java/rpc.java +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/lua/basic.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/mono/cache.aspx +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/mules/mulebrain.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/mules/reload.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/mules/signal_management.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/perl/active_workers_signal.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/perl/apps/input_with_offset.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/perl/test.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/perl/test_benchmark.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/perl/test_hello.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/perl/test_input_with_offset.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/perl/test_sleepy.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/perl/test_streaming.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/python/forcecl.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/python/helloapp.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/python/spooler_decorators/spooler_decorator_tests.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/ring/README.md +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/ring/config.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/ring/project.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/ring/src/uwsgi/ring/tests/app.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/ring/src/uwsgi/ring/tests/basic.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/ring/src/uwsgi/ring/tests/simple.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/ring/src/uwsgi/ring/tests/upload.clj +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/routing/auth.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/routing/errorlimiter.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/routing/limiter.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/sharedarea/bigranges.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/sharedarea/sharedarea_incdec.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/sharedarea/sharedarea_incdec.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/spooler/read.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/spooler/reload.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/spooler/spooldir/.gitignore +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/webdav/carddav.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/xslt/cd.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/xslt/cd.xml.xslt +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/t/xslt/routex.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/deadlocks/main.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/deadlocks/master-nothreads.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/deadlocks/master-singleinterpreter-threads-10workers.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/deadlocks/master-singleinterpreter-threads-1worker.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/deadlocks/master-threads-10workers.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/deadlocks/master-threads-1worker.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/deadlocks/nomaster-threads-10workers.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/deadlocks/nomaster-threads-1worker.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/deadlocks/sitecustomize.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/gh-deadlocks.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/gh-python.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/gh-rack.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/gh-shared.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/harakiri.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/multiapp.txt +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/rpc.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/sig.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/static/test.txt +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/static/test2.txt +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/streamer.psgi +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/t/static.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/templates/queue.html +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/testfilewrapper.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/testrpc.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/threads_atexit.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/threads_heavy.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/web3.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/websockets_echo.lua +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/websockets_echo.pl +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/tests/websockets_echo.ru +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/unittest/Makefile +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/unittest/check_core.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/unittest/check_regexp.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/uwsgi_main.c +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/uwsgidecorators.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/uwsgidsl.rb +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/valgrind/README +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/valgrind/valgrind-generate-sups.sh +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/vassals/broodlord.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/vassals/cc.ini +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/vassals/multi.xml +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/vhosttest/flask001/app1.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/vhosttest/flask002/app2.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/vhosttest/flask003/app3.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/vhosttest/flask004/app4.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/vhosttest/flask005/app5.py +0 -0
- {uwsgi-2.0.27 → uwsgi-2.0.29}/vhosttest/nginx.conf +0 -0
@@ -11,18 +11,12 @@ jobs:
|
|
11
11
|
strategy:
|
12
12
|
matrix:
|
13
13
|
libpcre: ["libpcre3-dev", "libpcre2-dev"]
|
14
|
-
os: ["ubuntu-
|
14
|
+
os: ["ubuntu-22.04"]
|
15
15
|
cc: [gcc, clang]
|
16
16
|
include:
|
17
|
-
- os: ubuntu-20.04
|
18
|
-
php: "php7.4"
|
19
|
-
php-config: "php-config7.4"
|
20
17
|
- os: ubuntu-22.04
|
21
18
|
php: "php8.1"
|
22
19
|
php-config: "php-config8.1"
|
23
|
-
exclude:
|
24
|
-
- os: ubuntu-20.04
|
25
|
-
cc: "clang"
|
26
20
|
|
27
21
|
runs-on: ${{ matrix.os }}
|
28
22
|
|
@@ -9,13 +9,13 @@ on:
|
|
9
9
|
jobs:
|
10
10
|
|
11
11
|
unittest:
|
12
|
-
runs-on: ubuntu-
|
12
|
+
runs-on: ubuntu-22.04
|
13
13
|
steps:
|
14
14
|
- name: Install dependencies
|
15
15
|
run: |
|
16
16
|
sudo apt update -qq
|
17
17
|
sudo apt install --no-install-recommends -qqyf \
|
18
|
-
|
18
|
+
libpcre3-dev libjansson-dev libcap2-dev \
|
19
19
|
check
|
20
20
|
- uses: actions/checkout@v4
|
21
21
|
- name: Run unit tests
|
@@ -30,7 +30,8 @@ jobs:
|
|
30
30
|
sudo apt install --no-install-recommends -qqyf \
|
31
31
|
libpcre2-dev libjansson-dev libcap2-dev \
|
32
32
|
php-dev libphp-embed libargon2-dev libsodium-dev \
|
33
|
-
pypy3
|
33
|
+
pypy3 default-jdk-headless libperl-dev \
|
34
|
+
ruby-dev ruby-rack
|
34
35
|
- uses: actions/checkout@v4
|
35
36
|
- name: Set env
|
36
37
|
run: echo "PROFILE=integration-tests" >> $GITHUB_ENV
|
@@ -38,10 +39,10 @@ jobs:
|
|
38
39
|
run: make all tests
|
39
40
|
|
40
41
|
python:
|
41
|
-
runs-on: ubuntu-
|
42
|
+
runs-on: ubuntu-22.04
|
42
43
|
strategy:
|
43
44
|
matrix:
|
44
|
-
python-version: ["2.7", "3.
|
45
|
+
python-version: ["2.7", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
|
45
46
|
test-suite: [python, deadlocks]
|
46
47
|
steps:
|
47
48
|
- name: Add deadnakes ppa
|
@@ -53,7 +54,7 @@ jobs:
|
|
53
54
|
libpcre2-dev libjansson-dev libcap2-dev \
|
54
55
|
curl
|
55
56
|
- name: Install distutils
|
56
|
-
if: contains(fromJson('["3.
|
57
|
+
if: contains(fromJson('["3.7","3.8","3.9","3.10","3.11"]'), matrix.python-version)
|
57
58
|
run: |
|
58
59
|
sudo apt install --no-install-recommends -qqyf python${{ matrix.python-version }}-distutils \
|
59
60
|
- uses: actions/checkout@v4
|
@@ -72,16 +73,16 @@ jobs:
|
|
72
73
|
./tests/gh-${{ matrix.test-suite }}.sh ${PYTHON_VERSION}
|
73
74
|
|
74
75
|
rack:
|
75
|
-
runs-on: ubuntu-
|
76
|
+
runs-on: ubuntu-22.04
|
76
77
|
strategy:
|
77
78
|
matrix:
|
78
|
-
rack-version: ["
|
79
|
+
rack-version: ["300"]
|
79
80
|
steps:
|
80
81
|
- name: Install dependencies
|
81
82
|
run: |
|
82
83
|
sudo apt update -qq
|
83
84
|
sudo apt install --no-install-recommends -qqyf python3-dev \
|
84
|
-
libpcre2-dev libjansson-dev libcap2-dev
|
85
|
+
libpcre2-dev libjansson-dev libcap2-dev ruby3.0-dev \
|
85
86
|
curl
|
86
87
|
- uses: actions/checkout@v4
|
87
88
|
- name: Build uWSGI binary
|
@@ -23,13 +23,13 @@ template = <<eof
|
|
23
23
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
24
24
|
<meta name="description" content="">
|
25
25
|
<meta name="author" content="unbit">
|
26
|
-
<link href="
|
26
|
+
<link href="https://unbit.github.com/bootstrap/css/bootstrap.css" rel="stylesheet">
|
27
27
|
<style>
|
28
28
|
body {
|
29
29
|
padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
|
30
30
|
}
|
31
31
|
</style>
|
32
|
-
<link href="
|
32
|
+
<link href="https://unbit.github.com/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
|
33
33
|
</head>
|
34
34
|
<body>
|
35
35
|
|
@@ -99,8 +99,8 @@ template = <<eof
|
|
99
99
|
|
100
100
|
|
101
101
|
|
102
|
-
<script src="
|
103
|
-
<script src="
|
102
|
+
<script src="https://unbit.github.com/jquery-1.7.2.min.js" type="text/javascript"></script>
|
103
|
+
<script src="https://unbit.github.com/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
104
104
|
</body>
|
105
105
|
</html>
|
106
106
|
eof
|
@@ -12,13 +12,15 @@ import greenlet
|
|
12
12
|
|
13
13
|
uwsgi_pypy_greenlets = {}
|
14
14
|
|
15
|
+
|
15
16
|
def uwsgi_pypy_greenlet_wrapper():
|
16
17
|
lib.async_schedule_to_req_green()
|
17
18
|
|
19
|
+
|
18
20
|
@ffi.callback("void()")
|
19
21
|
def uwsgi_pypy_greenlet_schedule():
|
20
22
|
id = lib.uwsgi.wsgi_req.async_id
|
21
|
-
modifier1 = lib.uwsgi.wsgi_req.uh.modifier1
|
23
|
+
modifier1 = lib.uwsgi.wsgi_req.uh.modifier1
|
22
24
|
|
23
25
|
# generate a new greenlet
|
24
26
|
if not lib.uwsgi.wsgi_req.suspended:
|
@@ -36,10 +38,11 @@ def uwsgi_pypy_greenlet_schedule():
|
|
36
38
|
if lib.uwsgi.p[modifier1].resume:
|
37
39
|
lib.uwsgi.p[modifier1].resume(ffi.NULL)
|
38
40
|
|
41
|
+
|
39
42
|
@ffi.callback("void(struct wsgi_request *)")
|
40
43
|
def uwsgi_pypy_greenlet_switch(wsgi_req):
|
41
|
-
|
42
|
-
modifier1 = wsgi_req.uh.modifier1
|
44
|
+
wsgi_req.async_id
|
45
|
+
modifier1 = wsgi_req.uh.modifier1
|
43
46
|
|
44
47
|
# this is called in the current greenlet
|
45
48
|
if lib.uwsgi.p[modifier1].suspend:
|
@@ -54,7 +57,7 @@ def uwsgi_pypy_greenlet_switch(wsgi_req):
|
|
54
57
|
# update current running greenlet
|
55
58
|
lib.uwsgi.wsgi_req = wsgi_req
|
56
59
|
|
57
|
-
if lib.uwsgi.async
|
60
|
+
if lib.uwsgi.async < 1:
|
58
61
|
raise Exception("pypy greenlets require async mode !!!")
|
59
62
|
lib.uwsgi.schedule_to_main = uwsgi_pypy_greenlet_switch
|
60
63
|
lib.uwsgi.schedule_to_req = uwsgi_pypy_greenlet_schedule
|
@@ -4,6 +4,7 @@ from django.conf import settings
|
|
4
4
|
import os
|
5
5
|
import sys
|
6
6
|
|
7
|
+
|
7
8
|
class Command(BaseCommand):
|
8
9
|
help = "Runs this project as a uWSGI application. Requires the uwsgi binary in system path."
|
9
10
|
|
@@ -12,10 +13,10 @@ class Command(BaseCommand):
|
|
12
13
|
|
13
14
|
def handle(self, *args, **options):
|
14
15
|
for arg in args:
|
15
|
-
k,v = arg.split('=')
|
16
|
+
k, v = arg.split('=')
|
16
17
|
if k == 'http':
|
17
18
|
if self.http_port:
|
18
|
-
|
19
|
+
self.http_port = v
|
19
20
|
elif k == 'socket':
|
20
21
|
self.http_port = None
|
21
22
|
self.socket_addr = v
|
@@ -40,8 +41,8 @@ class Command(BaseCommand):
|
|
40
41
|
elif self.socket_addr:
|
41
42
|
os.environ['UWSGI_SOCKET'] = self.socket_addr
|
42
43
|
|
43
|
-
|
44
|
-
|
44
|
+
# map admin static files
|
45
|
+
os.environ['UWSGI_STATIC_MAP'] = '%s=%s' % (settings.ADMIN_MEDIA_PREFIX, os.path.join(django.__path__[0], 'contrib', 'admin', 'media'))
|
45
46
|
# remove sockets/pidfile at exit
|
46
47
|
os.environ['UWSGI_VACUUM'] = '1'
|
47
48
|
# retrieve/set the PythonHome
|
@@ -57,7 +58,7 @@ class Command(BaseCommand):
|
|
57
58
|
# exec the uwsgi binary
|
58
59
|
os.execvp('uwsgi', ('uwsgi',))
|
59
60
|
|
60
|
-
def usage(self,
|
61
|
+
def usage(self, subcommand):
|
61
62
|
return r"""
|
62
63
|
run this project on the uWSGI server
|
63
64
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
from __future__ import print_function
|
2
|
+
|
3
|
+
from tasksconsumer import queueconsumer
|
4
|
+
|
5
|
+
|
6
|
+
@queueconsumer('fast', 4)
|
7
|
+
def fast_queue(arguments):
|
8
|
+
print("fast", arguments)
|
9
|
+
|
10
|
+
|
11
|
+
@queueconsumer('slow')
|
12
|
+
def slow_queue(arguments):
|
13
|
+
print("foobar", arguments)
|
@@ -1,35 +1,37 @@
|
|
1
|
-
from uwsgidecorators import
|
2
|
-
import Queue
|
1
|
+
from uwsgidecorators import spool
|
3
2
|
from threading import Thread
|
4
3
|
|
4
|
+
from six.moves import queue
|
5
|
+
|
5
6
|
queues = {}
|
6
7
|
|
8
|
+
|
7
9
|
class queueconsumer(object):
|
8
10
|
|
9
11
|
def __init__(self, name, num=1, **kwargs):
|
10
12
|
self.name = name
|
11
|
-
|
12
|
-
self.queue =
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
self.num = num
|
14
|
+
self.queue = queue.Queue()
|
15
|
+
self.threads = []
|
16
|
+
self.func = None
|
17
|
+
queues[self.name] = self
|
17
18
|
|
18
19
|
@staticmethod
|
19
20
|
def consumer(self):
|
20
21
|
while True:
|
21
|
-
|
22
|
-
print
|
23
|
-
|
24
|
-
|
22
|
+
req = self.queue.get()
|
23
|
+
print(req)
|
24
|
+
self.func(req)
|
25
|
+
self.queue.task_done()
|
25
26
|
|
26
27
|
def __call__(self, f):
|
27
28
|
self.func = f
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
for i in range(self.num):
|
30
|
+
t = Thread(target=self.consumer, args=(self,))
|
31
|
+
self.threads.append(t)
|
32
|
+
t.daemon = True
|
33
|
+
t.start()
|
34
|
+
|
33
35
|
|
34
36
|
@spool
|
35
37
|
def spooler_enqueuer(arguments):
|
@@ -0,0 +1,118 @@
|
|
1
|
+
from twisted.internet import defer, protocol, reactor
|
2
|
+
from twisted.protocols import basic
|
3
|
+
from twisted.web2 import http, resource, responsecode, stream
|
4
|
+
|
5
|
+
import struct
|
6
|
+
|
7
|
+
|
8
|
+
class uWSGIClientResource(resource.LeafResource):
|
9
|
+
|
10
|
+
def __init__(self, app='', port=3030, host='localhost'):
|
11
|
+
resource.LeafResource.__init__(self)
|
12
|
+
self.host = host
|
13
|
+
self.port = port
|
14
|
+
self.app = app
|
15
|
+
|
16
|
+
def renderHTTP(self, request):
|
17
|
+
return uWSGI(request, self.app, self.host, self.port)
|
18
|
+
|
19
|
+
|
20
|
+
def uWSGI(request, app, host, port):
|
21
|
+
if request.stream.length is None:
|
22
|
+
return http.Response(responsecode.LENGTH_REQUIRED)
|
23
|
+
|
24
|
+
request.uwsgi_app = app
|
25
|
+
factory = uWSGIClientProtocolFactory(request)
|
26
|
+
reactor.connectTCP(host, port, factory)
|
27
|
+
return factory.deferred
|
28
|
+
|
29
|
+
|
30
|
+
class uWSGIClientProtocol(basic.LineReceiver):
|
31
|
+
|
32
|
+
def __init__(self, request, deferred):
|
33
|
+
self.request = request
|
34
|
+
self.deferred = deferred
|
35
|
+
self.stream = stream.ProducerStream()
|
36
|
+
self.response = http.Response(stream=self.stream)
|
37
|
+
self.status_parsed = None
|
38
|
+
|
39
|
+
def build_uwsgi_var(self, key, value):
|
40
|
+
return struct.pack('<H', len(key)) + key + struct.pack('<H', len(value)) + value
|
41
|
+
|
42
|
+
def connectionMade(self):
|
43
|
+
print(self.request.__dict__)
|
44
|
+
# reset response parser
|
45
|
+
self.status_parsed = None
|
46
|
+
# build header and vars
|
47
|
+
vars = ''
|
48
|
+
|
49
|
+
if self.request.stream.length:
|
50
|
+
vars += self.build_uwsgi_var('CONTENT_LENGTH', str(self.request.stream.length))
|
51
|
+
|
52
|
+
for hkey, hval in self.request.headers.getAllRawHeaders():
|
53
|
+
# use a list, probably it will be extended
|
54
|
+
if hkey.lower() not in ('content-type'):
|
55
|
+
vars += self.build_uwsgi_var('HTTP_' + hkey.upper().replace('-', '_'), ','.join(hval))
|
56
|
+
else:
|
57
|
+
vars += self.build_uwsgi_var(hkey.upper().replace('-', '_'), ','.join(hval))
|
58
|
+
|
59
|
+
vars += self.build_uwsgi_var('REQUEST_METHOD', self.request.method)
|
60
|
+
vars += self.build_uwsgi_var('SCRIPT_NAME', self.request.uwsgi_app)
|
61
|
+
vars += self.build_uwsgi_var('PATH_INFO', self.request.path[len(self.request.uwsgi_app):])
|
62
|
+
vars += self.build_uwsgi_var('QUERY_STRING', self.request.querystring)
|
63
|
+
vars += self.build_uwsgi_var('SERVER_NAME', self.request.host)
|
64
|
+
vars += self.build_uwsgi_var('SERVER_PORT', str(self.request.port))
|
65
|
+
vars += self.build_uwsgi_var('SERVER_PROTOCOL', self.request.scheme.upper() + '/' + str(self.request.clientproto[0]) + '.' + str(self.request.clientproto[1]))
|
66
|
+
|
67
|
+
vars += self.build_uwsgi_var('REQUEST_URI', self.request.uri)
|
68
|
+
vars += self.build_uwsgi_var('REMOTE_ADDR', self.request.remoteAddr.host)
|
69
|
+
|
70
|
+
self.transport.write(struct.pack('<BHB', 0, len(vars), 0))
|
71
|
+
self.transport.write(vars)
|
72
|
+
|
73
|
+
# send request data
|
74
|
+
stream.StreamProducer(self.request.stream).beginProducing(self.transport)
|
75
|
+
|
76
|
+
def lineReceived(self, line):
|
77
|
+
if self.status_parsed is None:
|
78
|
+
self.response.code = line.split(' ', 2)[1]
|
79
|
+
self.status_parsed = True
|
80
|
+
return
|
81
|
+
|
82
|
+
# end of headers
|
83
|
+
if line == '':
|
84
|
+
self.setRawMode()
|
85
|
+
self.deferred.callback(self.response)
|
86
|
+
self.response = None
|
87
|
+
return
|
88
|
+
|
89
|
+
name, value = line.split(':', 1)
|
90
|
+
value = value.strip()
|
91
|
+
|
92
|
+
self.response.headers.addRawHeader(name, value)
|
93
|
+
|
94
|
+
def rawDataReceived(self, data):
|
95
|
+
self.stream.write(data)
|
96
|
+
|
97
|
+
def connectionLost(self, reason):
|
98
|
+
self.stream.finish()
|
99
|
+
|
100
|
+
|
101
|
+
class uWSGIClientProtocolFactory(protocol.ClientFactory):
|
102
|
+
|
103
|
+
protocol = uWSGIClientProtocol
|
104
|
+
noisy = False # Make Factory shut up
|
105
|
+
|
106
|
+
def __init__(self, request):
|
107
|
+
self.request = request
|
108
|
+
self.deferred = defer.Deferred()
|
109
|
+
|
110
|
+
def buildProtocol(self, addr):
|
111
|
+
return self.protocol(self.request, self.deferred)
|
112
|
+
|
113
|
+
def clientConnectionFailed(self, connector, reason):
|
114
|
+
self.sendFailureResponse(reason)
|
115
|
+
|
116
|
+
def sendFailureResponse(self, reason):
|
117
|
+
response = http.Response(code=responsecode.BAD_GATEWAY, stream=str(reason.value))
|
118
|
+
self.deferred.callback(response)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
from __future__ import print_function
|
2
|
+
|
1
3
|
import mmap
|
2
4
|
import os
|
3
5
|
import struct
|
@@ -6,6 +8,7 @@ import time
|
|
6
8
|
import sys
|
7
9
|
from optparse import OptionParser
|
8
10
|
|
11
|
+
|
9
12
|
class Cache:
|
10
13
|
|
11
14
|
def __init__(self, filename, cache_slots, block_size=65536, sample_sleep=1):
|
@@ -41,7 +44,7 @@ class Cache:
|
|
41
44
|
fields = struct.unpack_from('@HHIQQQQQ2048c', buf)
|
42
45
|
key = array.array('c', fields[8:self.key_size+8]).tostring().rstrip('\x00')
|
43
46
|
|
44
|
-
if [x for x in key if x!= '\x00']:
|
47
|
+
if [x for x in key if x != '\x00']:
|
45
48
|
buf = self.store_read_item_block(position)
|
46
49
|
value = array.array('c', buf).tostring().rstrip('\x00')
|
47
50
|
else:
|
@@ -55,7 +58,7 @@ class Cache:
|
|
55
58
|
if self.sample_sleep:
|
56
59
|
time.sleep(self.sample_sleep)
|
57
60
|
return data
|
58
|
-
|
61
|
+
|
59
62
|
def update_stats(self, data):
|
60
63
|
# data is a list of (position, key, value, len(value)) tuples
|
61
64
|
items = len([1 for x in data if x[3] > 0])
|
@@ -68,54 +71,75 @@ class Cache:
|
|
68
71
|
self.samples += 1
|
69
72
|
block_sizes = sum([x[3] for x in data])
|
70
73
|
self.block_sizes += block_sizes
|
71
|
-
self.history.append({
|
72
|
-
'
|
74
|
+
self.history.append({
|
75
|
+
'full': full,
|
76
|
+
'empty': empty,
|
77
|
+
'data': data,
|
78
|
+
'items': items,
|
79
|
+
'block_sizes': block_sizes
|
80
|
+
})
|
73
81
|
|
74
82
|
def dump(self):
|
75
83
|
return {
|
76
84
|
'samples': self.samples,
|
77
85
|
'history': self.history,
|
78
86
|
'cache_slots': self.cache_slots,
|
79
|
-
'sample_sleep': self.sample_sleep,
|
87
|
+
'sample_sleep': self.sample_sleep,
|
80
88
|
'cache_empty': self.cache_empty,
|
81
89
|
'cache_full': self.cache_full,
|
82
90
|
'cache_items': self.cache_items,
|
83
91
|
'block_sizes': self.block_sizes,
|
84
|
-
|
92
|
+
}
|
85
93
|
|
86
94
|
def show_dump(self):
|
87
95
|
d = self.dump()
|
88
|
-
print
|
89
|
-
print
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
print
|
94
|
-
|
95
|
-
|
96
|
-
|
96
|
+
print()
|
97
|
+
print("Recorded %d samples (%d second(s) sleep between samples)" % (
|
98
|
+
d['samples'],
|
99
|
+
d['sample_sleep']
|
100
|
+
))
|
101
|
+
print("Cache empty %d times, full %d times, %.2f items on average" % (
|
102
|
+
d['cache_empty'],
|
103
|
+
d['cache_full'],
|
104
|
+
d['cache_items'] / d['samples']
|
105
|
+
))
|
106
|
+
print("Block size average size: %d bytes" % (
|
107
|
+
d['block_sizes'] / d['cache_items'] * 8
|
108
|
+
))
|
109
|
+
print("Data in cache average: %d bytes" % (
|
110
|
+
d['block_sizes'] / d['samples'] * 8
|
111
|
+
))
|
112
|
+
|
97
113
|
|
98
114
|
def main(options):
|
99
115
|
cache = Cache(options.cache_store, options.cache_slots, options.block_size,
|
100
|
-
|
101
|
-
print
|
116
|
+
options.sleep_time)
|
117
|
+
print("Recording...")
|
102
118
|
while True:
|
103
119
|
try:
|
104
|
-
|
120
|
+
cache.read()
|
105
121
|
except KeyboardInterrupt:
|
106
122
|
cache.show_dump()
|
107
123
|
sys.exit(0)
|
108
124
|
|
109
125
|
if __name__ == '__main__':
|
110
126
|
parser = OptionParser()
|
111
|
-
parser.add_option(
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
parser.add_option(
|
116
|
-
|
117
|
-
|
118
|
-
|
127
|
+
parser.add_option(
|
128
|
+
"-s", "--cache-slots", dest="cache_slots", type="int",
|
129
|
+
help="Slots available in the cache, uwsgi cache option"
|
130
|
+
)
|
131
|
+
parser.add_option(
|
132
|
+
"-c", "--cache-store", dest="cache_store", default="uwsgi.cache",
|
133
|
+
help="The filename of the cache store, uwsgi cache-store option. Default: uwsgi.cache"
|
134
|
+
)
|
135
|
+
parser.add_option(
|
136
|
+
"-b", "--block-size", dest="block_size", default=65536, type="int",
|
137
|
+
help="The size of the cache block, uwsgi cache-blocksize option. Default: 65536"
|
138
|
+
)
|
139
|
+
parser.add_option(
|
140
|
+
"-t", "--sleep-time", dest="sleep_time", default=1, type="int",
|
141
|
+
help="The time to sleep between each sample. Default: 1"
|
142
|
+
)
|
119
143
|
|
120
144
|
(options, args) = parser.parse_args()
|
121
145
|
if not options.cache_slots:
|
@@ -23,13 +23,13 @@ template = <<eof
|
|
23
23
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
24
24
|
<meta name="description" content="">
|
25
25
|
<meta name="author" content="unbit">
|
26
|
-
<link href="
|
26
|
+
<link href="https://unbit.github.com/bootstrap/css/bootstrap.css" rel="stylesheet">
|
27
27
|
<style>
|
28
28
|
body {
|
29
29
|
padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
|
30
30
|
}
|
31
31
|
</style>
|
32
|
-
<link href="
|
32
|
+
<link href="https://unbit.github.com/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
|
33
33
|
</head>
|
34
34
|
<body>
|
35
35
|
|
@@ -75,8 +75,8 @@ template = <<eof
|
|
75
75
|
|
76
76
|
<% end %>
|
77
77
|
|
78
|
-
<script src="
|
79
|
-
<script src="
|
78
|
+
<script src="https://unbit.github.com/jquery-1.7.2.min.js" type="text/javascript"></script>
|
79
|
+
<script src="https://unbit.github.com/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
|
80
80
|
</body>
|
81
81
|
</html>
|
82
82
|
eof
|