Skip to main content

A WSGI handler for ISAPI

Project description



ISAPI WSGI is licenced under the MIT License.


ISAPI WSGI is an implementation of WSGI (PEP 333) for running as an ISAPI extension under IIS. WSGI is considered as important standard for the future of web deployed Python code. There are implementations for CGI, mod_python, twisted, jython, etc. This was the first implementation for IIS/ISAPI.


ISAPI WSGI is currently dependent on Mark Hammond’s Python win32 isapi extension, available in the Python for Windows Extensions project.


Thanks to contributions from the communitity, there are two implementations. One is single-threaded; the other is multi-threaded.

It has been used to run simple python wsgi applications thru to applications developed using the Django, Pylons and TurboGears frameworks.

More details can be read on the project page.

Released versions are available from the project code site and PyPI. Just easy_install isapi-wsgi.


Download the latest version from the GitHub repository or install it using easy_install isapi-wsgi-dev.

Mailing List

A mailing list is maintained using google groups.


Mark Rees mark dot john dot rees at gmail dot com



Replicate ecb server varible HTTPS in wsgi environment so Trac and Mercurial can use isapi_wsgi over https.


Make manipulation of ECB server variable APPL_MD_PATH case insensitive as string case appears to be IIS version/installation dependent.

Add serving from IIS root example - examples\


Improved virtual directory support:

Application can now be deployed to any level of the IIS directory structure including the root.

SCRIPT_NAME is now set properly (to the app root if it’s a *-mapped script handler)

Added Python 3.0 compatibility

First release to PyPI

Set IIS REMOTE_ADDR env variable as part of WSGI environment.

Add optional size argument to wsgi.input’s readline(). This is not part of WSGI spec, but stdlib now requires it.


Apply Chris Lambacher’s first set of patches:

ISAPISimpleHandler creates handler object per request.

ISAPIThreadPoolHandler where the wsgi requests are run on worker threads from the thread pool.

App now serves from VirtualDirectory root by default.

0.2 First beta release

Added as an example for running quixote apps via QWIP.

Update README.txt to reflect new example.

Added basic error handling to cope with Extension Errors that are generated when a client disconnects before the extension i/o has finished.

Reset self.headers and self.headers_sent in HttpExtensionProc so wsgi states are correct if Extension Error occurred in previous call.


Change write method so it uses ecb.WriteClient rather than print redirection which was causing an Extension Error when running QWIP apps.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (26.7 kB view hashes)

Uploaded source

Built Distribution

isapi_wsgi-0.4.2.win32.exe (75.9 kB view hashes)

Uploaded 2 5

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page