<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: wsgi</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/wsgi.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2021-05-12T17:59:51+00:00</updated><author><name>Simon Willison</name></author><entry><title>Quoting Using async and await in Flask 2.0</title><link href="https://simonwillison.net/2021/May/12/using-async-and-await/#atom-tag" rel="alternate"/><published>2021-05-12T17:59:51+00:00</published><updated>2021-05-12T17:59:51+00:00</updated><id>https://simonwillison.net/2021/May/12/using-async-and-await/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://flask.palletsprojects.com/en/2.0.x/async-await/"&gt;&lt;p&gt;Async functions require an event loop to run. Flask, as a WSGI application, uses one worker to handle one request/response cycle. When a request comes in to an async view, Flask will start an event loop in a thread, run the view function there, then return the result.&lt;/p&gt;
&lt;p&gt;Each request still ties up one worker, even for async views. The upside is that you can run async code within a view, for example to make multiple concurrent database queries, HTTP requests to an external API, etc. However, the number of requests your application can handle at one time will remain the same.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://flask.palletsprojects.com/en/2.0.x/async-await/"&gt;Using async and await in Flask 2.0&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/async"&gt;async&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/flask"&gt;flask&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="async"/><category term="flask"/><category term="python"/><category term="wsgi"/></entry><entry><title>The First Few Weeks - ep.io</title><link href="https://simonwillison.net/2011/Jan/13/epio/#atom-tag" rel="alternate"/><published>2011-01-13T04:25:00+00:00</published><updated>2011-01-13T04:25:00+00:00</updated><id>https://simonwillison.net/2011/Jan/13/epio/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.ep.io/blog/first-few-weeks/"&gt;The First Few Weeks - ep.io&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Another take on managed Python Django/WSGI hosting, from Andrew Godwin and Ben Firshman.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/andrew-godwin"&gt;andrew-godwin&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ben-firshman"&gt;ben-firshman&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hosting"&gt;hosting&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;&lt;/p&gt;



</summary><category term="andrew-godwin"/><category term="ben-firshman"/><category term="django"/><category term="hosting"/><category term="python"/><category term="wsgi"/><category term="recovered"/></entry><entry><title>The Web Server Benchmarking We Need</title><link href="https://simonwillison.net/2010/Mar/17/ian/#atom-tag" rel="alternate"/><published>2010-03-17T10:05:35+00:00</published><updated>2010-03-17T10:05:35+00:00</updated><id>https://simonwillison.net/2010/Mar/17/ian/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.ianbicking.org/2010/03/16/web-server-benchmarking-we-need/"&gt;The Web Server Benchmarking We Need&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Ian Bicking asks for a WSGI benchmark which emphasises error handling over raw performance—can the server keep serving requests if some of them are CPU bound, I/O bound, wedged or cause a segfault?


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/benchmarks"&gt;benchmarks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ian-bicking"&gt;ian-bicking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="benchmarks"/><category term="ian-bicking"/><category term="python"/><category term="wsgi"/></entry><entry><title>Why toppcloud will not be agnostic</title><link href="https://simonwillison.net/2010/Feb/12/toppcloud/#atom-tag" rel="alternate"/><published>2010-02-12T09:21:32+00:00</published><updated>2010-02-12T09:21:32+00:00</updated><id>https://simonwillison.net/2010/Feb/12/toppcloud/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.ianbicking.org/2010/02/10/why-toppcloud-not-agnostic/"&gt;Why toppcloud will not be agnostic&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Ian Bicking’s toppcloud aims to offer deployment with the ease of use of AppEngine against a standard, open source Ubuntu + Python 2.6 + mod_wsgi + Varnish stack. Here he explains why he’s not going to vary the required components: keeping everything completely standardised means everyone gets the same bugs (and the same fixes).


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/deployment"&gt;deployment&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google-app-engine"&gt;google-app-engine&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ian-bicking"&gt;ian-bicking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modwsgi"&gt;modwsgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/toppcloud"&gt;toppcloud&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ubuntu"&gt;ubuntu&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/varnish"&gt;varnish&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="deployment"/><category term="django"/><category term="google-app-engine"/><category term="ian-bicking"/><category term="modwsgi"/><category term="python"/><category term="toppcloud"/><category term="ubuntu"/><category term="varnish"/><category term="wsgi"/></entry><entry><title>Fabric, Django, Git, Apache, mod_wsgi, virtualenv and pip deployment</title><link href="https://simonwillison.net/2009/Jul/28/fabric/#atom-tag" rel="alternate"/><published>2009-07-28T11:56:09+00:00</published><updated>2009-07-28T11:56:09+00:00</updated><id>https://simonwillison.net/2009/Jul/28/fabric/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://morethanseven.net/2009/07/27/fabric-django-git-apache-mod_wsgi-virtualenv-and-p/"&gt;Fabric, Django, Git, Apache, mod_wsgi, virtualenv and pip deployment&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I’m slowly working my way through this stack at the moment—next stop, fabric.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/apache"&gt;apache&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/deployment"&gt;deployment&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/fabric"&gt;fabric&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gareth-rushgrove"&gt;gareth-rushgrove&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/git"&gt;git&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modwsgi"&gt;modwsgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pip"&gt;pip&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/virtualenv"&gt;virtualenv&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="apache"/><category term="deployment"/><category term="django"/><category term="fabric"/><category term="gareth-rushgrove"/><category term="git"/><category term="modwsgi"/><category term="pip"/><category term="python"/><category term="virtualenv"/><category term="wsgi"/></entry><entry><title>Finding and fixing memory leaks in Python</title><link href="https://simonwillison.net/2009/Apr/22/finding/#atom-tag" rel="alternate"/><published>2009-04-22T12:16:32+00:00</published><updated>2009-04-22T12:16:32+00:00</updated><id>https://simonwillison.net/2009/Apr/22/finding/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://amix.dk/blog/viewEntry/19420"&gt;Finding and fixing memory leaks in Python&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Using Dozer, a clever piece of WSGI middleware which displays sparklines of Python object counts and allows you to introspect them, using the gc module under the hood.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/amir-salihefendic"&gt;amir-salihefendic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/debugging"&gt;debugging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/memory"&gt;memory&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/memoryleaks"&gt;memoryleaks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/middleware"&gt;middleware&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="amir-salihefendic"/><category term="debugging"/><category term="memory"/><category term="memoryleaks"/><category term="middleware"/><category term="python"/><category term="wsgi"/></entry><entry><title>How to use Django with Apache and mod_wsgi</title><link href="https://simonwillison.net/2009/Apr/1/modwsgi/#atom-tag" rel="alternate"/><published>2009-04-01T00:24:04+00:00</published><updated>2009-04-01T00:24:04+00:00</updated><id>https://simonwillison.net/2009/Apr/1/modwsgi/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/"&gt;How to use Django with Apache and mod_wsgi&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
My favourite deployment option is now included in the official Django docs, thanks to Alex Gaynor. I tend to run a stripped down Apache with mod_wsgi behind an nginx proxy, and have nginx serve static files directly. This avoids the need for a completely separate media server (although a separate media domain is still a good idea for better client-side performance).


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/alex-gaynor"&gt;alex-gaynor&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/deployment"&gt;deployment&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modwsgi"&gt;modwsgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nginx"&gt;nginx&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/proxies"&gt;proxies&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="alex-gaynor"/><category term="deployment"/><category term="django"/><category term="modwsgi"/><category term="nginx"/><category term="proxies"/><category term="python"/><category term="wsgi"/></entry><entry><title>Future roadmap for mod_wsgi</title><link href="https://simonwillison.net/2009/Mar/19/modwsgi/#atom-tag" rel="alternate"/><published>2009-03-19T17:27:01+00:00</published><updated>2009-03-19T17:27:01+00:00</updated><id>https://simonwillison.net/2009/Mar/19/modwsgi/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.dscpl.com.au/2009/03/future-roadmap-for-modwsgi.html"&gt;Future roadmap for mod_wsgi&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
mod_wsgi 3.0 isn’t too far off, and will include Python 3.0 support, WSGI application preloading and internal web server redirection (similar to nginx X-Accel-Redirect). Version 4.0 plans a major architectural change that will allow multiple versions of Python to be run from the same Apache.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/apache"&gt;apache&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/graham-dumpleton"&gt;graham-dumpleton&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modwsgi"&gt;modwsgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nginx"&gt;nginx&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="apache"/><category term="graham-dumpleton"/><category term="modwsgi"/><category term="nginx"/><category term="python"/><category term="wsgi"/></entry><entry><title>Load spikes and excessive memory usage in mod_python</title><link href="https://simonwillison.net/2009/Mar/16/graham/#atom-tag" rel="alternate"/><published>2009-03-16T17:26:59+00:00</published><updated>2009-03-16T17:26:59+00:00</updated><id>https://simonwillison.net/2009/Mar/16/graham/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html"&gt;Load spikes and excessive memory usage in mod_python&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“The final answer? Stop using mod_python, use mod_wsgi and run it with daemon mode instead. You will save yourself a lot of headaches by doing so.”


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/apache"&gt;apache&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/graham-dumpleton"&gt;graham-dumpleton&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modpython"&gt;modpython&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modwsgi"&gt;modwsgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="apache"/><category term="graham-dumpleton"/><category term="modpython"/><category term="modwsgi"/><category term="python"/><category term="wsgi"/></entry><entry><title>Concurrence</title><link href="https://simonwillison.net/2009/Mar/15/concurrence/#atom-tag" rel="alternate"/><published>2009-03-15T13:28:11+00:00</published><updated>2009-03-15T13:28:11+00:00</updated><id>https://simonwillison.net/2009/Mar/15/concurrence/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://opensource.hyves.org/concurrence/"&gt;Concurrence&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Exciting: a Python framework for “creating massively concurrent network applications” (the tutorial benchmarks a Hello World web server at over 8,000 requests a second). It’s implemented on top of libevent using pyrex, can run on either Stackless Python or Greenlets from the py library and ships with a WSGI server, an HTTP client and a DBAPI 2.0 compliant MySQL driver.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/greenlets"&gt;greenlets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/http"&gt;http&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/libevent"&gt;libevent&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysql"&gt;mysql&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pyrex"&gt;pyrex&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/stacklesspython"&gt;stacklesspython&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="greenlets"/><category term="http"/><category term="libevent"/><category term="mysql"/><category term="pyrex"/><category term="python"/><category term="stacklesspython"/><category term="wsgi"/></entry><entry><title>Ruby on Rails 2.3 Release Notes</title><link href="https://simonwillison.net/2009/Mar/15/rails/#atom-tag" rel="alternate"/><published>2009-03-15T13:22:11+00:00</published><updated>2009-03-15T13:22:11+00:00</updated><id>https://simonwillison.net/2009/Mar/15/rails/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://guides.rubyonrails.org/2_3_release_notes.html"&gt;Ruby on Rails 2.3 Release Notes&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I’m impressed with how thoroughly Rails has embraced Rack (Ruby’s standardised web framework API, inspired by Python’s WSGI).


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rack"&gt;rack&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails"&gt;rails&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ruby"&gt;ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="python"/><category term="rack"/><category term="rails"/><category term="ruby"/><category term="wsgi"/></entry><entry><title>FAPWS3-0.2 (WSGI server based on libev)</title><link href="https://simonwillison.net/2009/Feb/25/williamosy/#atom-tag" rel="alternate"/><published>2009-02-25T22:21:44+00:00</published><updated>2009-02-25T22:21:44+00:00</updated><id>https://simonwillison.net/2009/Feb/25/williamosy/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://william-os4y.livejournal.com/6485.html"&gt;FAPWS3-0.2 (WSGI server based on libev)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Another strong contender for Python’s answer to Mongrel—3500 requests/s for static files, 43 for a simple dynamic (Django powered) pages and 4.8 for a heavy SQL query—all benchmarked with 300 concurrent requests.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/fapws"&gt;fapws&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mongrel"&gt;mongrel&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webservers"&gt;webservers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="fapws"/><category term="mongrel"/><category term="python"/><category term="webservers"/><category term="wsgi"/></entry><entry><title>modswgi: Debugging Techniques</title><link href="https://simonwillison.net/2008/May/25/modwsgi/#atom-tag" rel="alternate"/><published>2008-05-25T13:34:42+00:00</published><updated>2008-05-25T13:34:42+00:00</updated><id>https://simonwillison.net/2008/May/25/modwsgi/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/p/modwsgi/wiki/DebuggingTechniques"&gt;modswgi: Debugging Techniques&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
mod_wsgi is excellent software, and the documentation is equally superb. I used these instructions recently to run the Python debugger inside a running instance of Apache, which helped my track down some import errors that weren’t occurring with Django’s development server.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/debugging"&gt;debugging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modwsgi"&gt;modwsgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pdb"&gt;pdb&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="debugging"/><category term="django"/><category term="modwsgi"/><category term="pdb"/><category term="python"/><category term="wsgi"/></entry><entry><title>Google App Engine</title><link href="https://simonwillison.net/2008/Apr/8/google/#atom-tag" rel="alternate"/><published>2008-04-08T07:25:35+00:00</published><updated>2008-04-08T07:25:35+00:00</updated><id>https://simonwillison.net/2008/Apr/8/google/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Write applications in Python using a WSGI compatible application framework, then host them on Google’s highly scalable infrastructure. The most exciting part is probably the Datastore API, which provides external developers with access to Bigtable for the first time.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bigtable"&gt;bigtable&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google-app-engine"&gt;google-app-engine&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/scaling"&gt;scaling&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/virtualisation"&gt;virtualisation&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="bigtable"/><category term="google"/><category term="google-app-engine"/><category term="python"/><category term="scaling"/><category term="virtualisation"/><category term="wsgi"/></entry><entry><title>Setup mod_wsgi for Django and Shared Hosting</title><link href="https://simonwillison.net/2008/Mar/26/setup/#atom-tag" rel="alternate"/><published>2008-03-26T14:42:02+00:00</published><updated>2008-03-26T14:42:02+00:00</updated><id>https://simonwillison.net/2008/Mar/26/setup/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.davidcramer.net/code/django/108/setup-mod_wsgi-for-django-and-shared-hosting.html"&gt;Setup mod_wsgi for Django and Shared Hosting&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Tutorial by David Cramer; attached are useful comments from mod_wsgi author Graham Dumpleton.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/david-cramer"&gt;david-cramer&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/graham-dumpleton"&gt;graham-dumpleton&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hosting"&gt;hosting&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modwsgi"&gt;modwsgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="david-cramer"/><category term="django"/><category term="graham-dumpleton"/><category term="hosting"/><category term="modwsgi"/><category term="python"/><category term="wsgi"/></entry><entry><title>Version 2.0 of mod_wsgi is now available</title><link href="https://simonwillison.net/2008/Mar/21/wsgi/#atom-tag" rel="alternate"/><published>2008-03-21T13:23:11+00:00</published><updated>2008-03-21T13:23:11+00:00</updated><id>https://simonwillison.net/2008/Mar/21/wsgi/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.dscpl.com.au/2008/03/version-20-of-modwsgi-is-now-available.html"&gt;Version 2.0 of mod_wsgi is now available&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Includes features that should make Python (and Django) on shared hosting much easier: a non-root user can touch their WSGI script file to restart just their application’s daemon processes when they make changes and Python virtual environments are supported to allow different versions of packages without interference.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hosting"&gt;hosting&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modwsgi"&gt;modwsgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sharedhosting"&gt;sharedhosting&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="hosting"/><category term="modwsgi"/><category term="python"/><category term="sharedhosting"/><category term="wsgi"/></entry><entry><title>django-evserver</title><link href="https://simonwillison.net/2008/Jan/19/majeks/#atom-tag" rel="alternate"/><published>2008-01-19T12:15:15+00:00</published><updated>2008-01-19T12:15:15+00:00</updated><id>https://simonwillison.net/2008/Jan/19/majeks/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://majek4.blogspot.com/2008/01/django-evserver-asynchronous-server-for.html"&gt;django-evserver&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Marek Majkowski got Comet working with Django using a custom WSGI server that wraps libevent using ctypes.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/comet"&gt;comet&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ctypes"&gt;ctypes&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/djangoevserver"&gt;djangoevserver&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/libevent"&gt;libevent&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/marekmajkowski"&gt;marekmajkowski&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="comet"/><category term="ctypes"/><category term="django"/><category term="djangoevserver"/><category term="libevent"/><category term="marekmajkowski"/><category term="python"/><category term="wsgi"/></entry><entry><title>mod_wsgi 1.0 Release Candiate Available</title><link href="https://simonwillison.net/2007/Jul/26/hex/#atom-tag" rel="alternate"/><published>2007-07-26T20:21:11+00:00</published><updated>2007-07-26T20:21:11+00:00</updated><id>https://simonwillison.net/2007/Jul/26/hex/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://hex-dump.blogspot.com/2007/07/modwsgi-10-release-candiate-available.html"&gt;mod_wsgi 1.0 Release Candiate Available&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
mod_wsgi is shaping up to be an excellent alternative to mod_python.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modpython"&gt;modpython&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modwsgi"&gt;modwsgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="modpython"/><category term="modwsgi"/><category term="python"/><category term="wsgi"/></entry><entry><title>Web hosting landscape and mod_wsgi</title><link href="https://simonwillison.net/2007/Jul/2/graham/#atom-tag" rel="alternate"/><published>2007-07-02T15:47:59+00:00</published><updated>2007-07-02T15:47:59+00:00</updated><id>https://simonwillison.net/2007/Jul/2/graham/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.dscpl.com.au/2007/07/web-hosting-landscape-and-modwsgi.html"&gt;Web hosting landscape and mod_wsgi&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Graham Dumpleton explains how mod_wsgi’s daemon mode should provide secure Python deployment for commodity hosting providers.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/graham-dumpleton"&gt;graham-dumpleton&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hosting"&gt;hosting&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/modwsgi"&gt;modwsgi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="graham-dumpleton"/><category term="hosting"/><category term="modwsgi"/><category term="python"/><category term="wsgi"/></entry><entry><title>Wait For It</title><link href="https://simonwillison.net/2007/Jun/9/wait/#atom-tag" rel="alternate"/><published>2007-06-09T16:53:14+00:00</published><updated>2007-06-09T16:53:14+00:00</updated><id>https://simonwillison.net/2007/Jun/9/wait/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://pythonpaste.org/waitforit/"&gt;Wait For It&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Neat WSGI middleware from Ian Bicking that launches a thread for every incoming request and watches for slow responses; if something is taking too long it returns a “please wait” page to the user and polls for completion.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://blog.ianbicking.org/what-im-up-to-jun07.html"&gt;Ian Bicking&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ian-bicking"&gt;ian-bicking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/middleware"&gt;middleware&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="ian-bicking"/><category term="middleware"/><category term="python"/><category term="wsgi"/></entry><entry><title>modwsgi</title><link href="https://simonwillison.net/2007/Apr/14/modwsgi/#atom-tag" rel="alternate"/><published>2007-04-14T09:48:58+00:00</published><updated>2007-04-14T09:48:58+00:00</updated><id>https://simonwillison.net/2007/Apr/14/modwsgi/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.google.com/p/modwsgi/"&gt;modwsgi&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Apache module (written in C) for hosting Python WSGI applications, no mod_python required. Includes Django integration instructions. Has anyone tried this out?


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/apache"&gt;apache&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="apache"/><category term="django"/><category term="python"/><category term="wsgi"/></entry><entry><title>Rack</title><link href="https://simonwillison.net/2007/Mar/4/rack/#atom-tag" rel="alternate"/><published>2007-03-04T20:49:01+00:00</published><updated>2007-03-04T20:49:01+00:00</updated><id>https://simonwillison.net/2007/Mar/4/rack/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://rack.rubyforge.org/"&gt;Rack&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“Rack provides an minimal interface between webservers supporting Ruby and Ruby frameworks”. Ruby’s equivalent of WSGI has just hit v0.1.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/rack"&gt;rack&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ruby"&gt;ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="rack"/><category term="ruby"/><category term="wsgi"/></entry><entry><title>WSGI Wiki: url_vars specification</title><link href="https://simonwillison.net/2006/Nov/1/wsgi/#atom-tag" rel="alternate"/><published>2006-11-01T12:15:23+00:00</published><updated>2006-11-01T12:15:23+00:00</updated><id>https://simonwillison.net/2006/Nov/1/wsgi/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://wsgi.org/wsgi/Specifications/url_vars"&gt;WSGI Wiki: url_vars specification&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Another neat piece of the WSGI puzzle, has the potential to play nicely with Django.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="wsgi"/></entry><entry><title>Introducing WSGI: Python's Secret Web Weapon</title><link href="https://simonwillison.net/2006/Sep/28/introducing/#atom-tag" rel="alternate"/><published>2006-09-28T14:24:43+00:00</published><updated>2006-09-28T14:24:43+00:00</updated><id>https://simonwillison.net/2006/Sep/28/introducing/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.xml.com/pub/a/2006/09/27/introducing-wsgi-pythons-secret-web-weapon.html"&gt;Introducing WSGI: Python&amp;#x27;s Secret Web Weapon&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Every Python web developer should understand WSGI.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="python"/><category term="wsgi"/></entry><entry><title>WPHP</title><link href="https://simonwillison.net/2006/Jul/27/wphp/#atom-tag" rel="alternate"/><published>2006-07-27T23:01:09+00:00</published><updated>2006-07-27T23:01:09+00:00</updated><id>https://simonwillison.net/2006/Jul/27/wphp/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.ianbicking.org/2006-wphp.html"&gt;WPHP&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Run PHP under your Python WSGI app. Not nearly as crazy as it sounds.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/php"&gt;php&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="php"/><category term="python"/><category term="wsgi"/></entry><entry><title>selector - WSGI Delegation</title><link href="https://simonwillison.net/2006/Apr/17/selector/#atom-tag" rel="alternate"/><published>2006-04-17T12:13:27+00:00</published><updated>2006-04-17T12:13:27+00:00</updated><id>https://simonwillison.net/2006/Apr/17/selector/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://lukearno.com/projects/selector/"&gt;selector - WSGI Delegation&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Neat URL dispatching system, similar to Django’s.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="wsgi"/></entry><entry><title>Exciting developments with Django</title><link href="https://simonwillison.net/2005/Aug/3/django/#atom-tag" rel="alternate"/><published>2005-08-03T16:56:34+00:00</published><updated>2005-08-03T16:56:34+00:00</updated><id>https://simonwillison.net/2005/Aug/3/django/#atom-tag</id><summary type="html">
    &lt;p id="p-0"&gt;The amount of activity surrounding the &lt;a href="http://www.djangoproject.com/"&gt;Django web framework&lt;/a&gt; since its not-quite release a few weeks ago is amazing. Adrian, Jacob and Wilson have been working over-time, with 395 check-ins to source control since the 13th of July. They've added &lt;a href="http://code.djangoproject.com/file/django/trunk/django/core/handlers/wsgi.py"&gt;WSGI support&lt;/a&gt;, a &lt;a href="http://www.djangoproject.com/weblog/2005/jul/18/local_server/"&gt;development web server&lt;/a&gt;, &lt;a href="http://www.djangoproject.com/weblog/2005/jul/29/model_examples/"&gt;unit-tests&lt;/a&gt;, a &lt;a href="http://www.djangoproject.com/documentation/"&gt;ton of documentation&lt;/a&gt;, &lt;a href="http://www.djangoproject.com/weblog/2005/jul/21/sqlite3/"&gt;SQLite support&lt;/a&gt;, &lt;a href="http://code.djangoproject.com/changeset/384"&gt;database introspection&lt;/a&gt; and dozens of other feature tweaks and bug fixes. Check out the &lt;a href="http://code.djangoproject.com/timeline"&gt;project Timeline&lt;/a&gt; for an idea of just how frenetic things have been.&lt;/p&gt;

&lt;p id="p-1"&gt;The emerging &lt;a href="http://www.djangoproject.com/community/"&gt;Django community&lt;/a&gt; has been kicking in as well. There's a significant community-led initiative to get &lt;a href="http://code.djangoproject.com/wiki/InterNationalization"&gt;internationalisation&lt;/a&gt; and &lt;a href="http://code.djangoproject.com/wiki/Localization"&gt;localisation&lt;/a&gt; going, and a wide number of unofficial tutorials have emerged to complement &lt;a href="http://www.djangoproject.com/documentation/tutorial1/"&gt;the one on the site&lt;/a&gt;.&lt;/p&gt;

&lt;p id="p-2"&gt;Here's where things get really interesting: changes at the Journal-World have kick-started the Django job market. Rob Curley, formally in charge of the World Company's web activities, recently &lt;a href="http://www.digitaledge.org/DigArtPage.cfm?AID=7083"&gt;took up a new position&lt;/a&gt; at the &lt;a href="http://www.naplesnews.com/"&gt;Naples Daily News&lt;/a&gt; in Florida. Rob &lt;a href="http://eric.themoritzfamily.com/?p=48"&gt;just hired Eric Moritz&lt;/a&gt;, a regular on the #django IRC channel, to work on Django-powered projects there.&lt;/p&gt;

&lt;p id="p-3"&gt;Meanwhile, Adrian Holovaty has &lt;a href="http://www.poynter.org/column.asp?id=31&amp;amp;aid=86489"&gt;taken a new job&lt;/a&gt; at the &lt;a href="http://www.washingtonpost.com/"&gt;Washington Post&lt;/a&gt; as "Editor, Editorial Innovations" - a role that is sure to involve some very innovative use of Django (Adrian built &lt;a href="http://chicagocrime.org/"&gt;chicagocrime.org&lt;/a&gt;). Adrian's departure means that the Journal-World are &lt;a href="http://www.holovaty.com/blog/archive/2005/08/03/0202"&gt;looking for a new developer&lt;/a&gt; - here's &lt;a href="http://simonwillison.net/2004/Jun/29/job/" title="Fancy a job?"&gt;why you should apply&lt;/a&gt;.&lt;/p&gt;

&lt;p id="p-4"&gt;One thing's for certain: we're going to see some very exciting Django-powered sites in the next few months.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/adrian-holovaty"&gt;adrian-holovaty&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sqlite"&gt;sqlite&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="adrian-holovaty"/><category term="django"/><category term="sqlite"/><category term="wsgi"/></entry><entry><title>Latest WSGI Draft</title><link href="https://simonwillison.net/2004/Aug/26/latest/#atom-tag" rel="alternate"/><published>2004-08-26T00:13:28+00:00</published><updated>2004-08-26T00:13:28+00:00</updated><id>https://simonwillison.net/2004/Aug/26/latest/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://mail.python.org/pipermail/web-sig/2004-August/000562.html"&gt;Latest WSGI Draft&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The Python Web-SIG are working on a PEP.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/wsgi"&gt;wsgi&lt;/a&gt;&lt;/p&gt;



</summary><category term="wsgi"/></entry></feed>