aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/app.py
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2014-10-09 18:24:14 -0500
committerChristopher Allan Webber <cwebber@dustycloud.org>2014-10-10 14:42:17 -0500
commit227a81b534c2f77f6cdb10a5936c6b1dfb8c3ec6 (patch)
treef421f5db3d96925be81f78b60f2196a2eb4c7ff4 /mediagoblin/app.py
parent9bf845d88f3a08b3090a4a408189fc965b341148 (diff)
downloadmediagoblin-227a81b534c2f77f6cdb10a5936c6b1dfb8c3ec6.tar.lz
mediagoblin-227a81b534c2f77f6cdb10a5936c6b1dfb8c3ec6.tar.xz
mediagoblin-227a81b534c2f77f6cdb10a5936c6b1dfb8c3ec6.zip
Add and use paste server selector. Yeah! Smart solutions!
This commit sponsored by Tryggvi Björgvinsson. Thank you!
Diffstat (limited to 'mediagoblin/app.py')
-rw-r--r--mediagoblin/app.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/mediagoblin/app.py b/mediagoblin/app.py
index b3e41835..9014bf47 100644
--- a/mediagoblin/app.py
+++ b/mediagoblin/app.py
@@ -290,3 +290,34 @@ def paste_app_factory(global_config, **app_config):
mgoblin_app = hook_transform('wrap_wsgi', mgoblin_app)
return mgoblin_app
+
+
+def paste_server_selector(wsgi_app, global_config=None, **app_config):
+ """
+ Select between gunicorn and paste depending on what ia available
+ """
+ # See if we can import the gunicorn server...
+ # otherwise we'll use the paste server
+ try:
+ import gunicorn
+ except ImportError:
+ gunicorn = None
+
+ if gunicorn is None:
+ # use paste
+ from paste.httpserver import server_runner
+
+ cleaned_app_config = dict(
+ [(key, app_config[key])
+ for key in app_config
+ if key in ["host", "port", "handler", "ssl_pem", "ssl_context",
+ "server_version", "protocol_version", "start_loop",
+ "daemon_threads", "socket_timeout", "use_threadpool",
+ "threadpool_workers", "threadpool_options",
+ "request_queue_size"]])
+
+ return server_runner(wsgi_app, global_config, **cleaned_app_config)
+ else:
+ # use gunicorn
+ from gunicorn.app.pasterapp import PasterServerApplication
+ return PasterServerApplication(wsgi_app, global_config, **app_config)