Skip to content

Instantly share code, notes, and snippets.

@Arachnid
Created March 26, 2010 17:52
Show Gist options
  • Save Arachnid/345172 to your computer and use it in GitHub Desktop.
Save Arachnid/345172 to your computer and use it in GitHub Desktop.
class DomainDispatchMiddleware(object):
def __init__(self, domain_apps, default_app):
"""Constructor.
Args:
domain_apps: A list of (regexp, application) tuples to dispatch to based on domain.
default_app: An app to run if no domain matches.
"""
self.domain_apps = domain_apps
self.default_app = default_app
def __call__(self, environ, start_response):
for regexp, application in self.domain_apps:
if regexp.match(environ['HTTP_HOST']):
return application(environ, start_response)
return self.default_app(environ, start_response)
# Example usage:
application = domain_dispatch_middleware([
('mydomain\.com', mydomain_app),
('.*\.mydomain\.com', subdomain_app)],
default_app)
def main():
run_wsgi_app(application)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment