summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Saddi <allan@saddi.com>2009-02-02 23:55:25 -0800
committerAllan Saddi <allan@saddi.com>2009-02-02 23:55:25 -0800
commitddc2a9ec8ad1e21be96caf9f84676371d404c224 (patch)
treea43bc9cc0c14d80fdf795329e2af4fc833266e31
parent517cbc0c9858b07c86f3585f454842562cee188e (diff)
downloadflup-ddc2a9ec8ad1e21be96caf9f84676371d404c224.tar.gz
Add forceCGI keyword argument to FastCGI servers to
programmatically force CGI behavior.
-rw-r--r--ChangeLog3
-rw-r--r--flup/server/fcgi.py5
-rw-r--r--flup/server/fcgi_base.py6
-rw-r--r--flup/server/fcgi_fork.py8
-rw-r--r--flup/server/fcgi_single.py5
5 files changed, 18 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 3a71c15..5554bb4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2009-02-02 Allan Saddi <allan@saddi.com>
+ * Add forceCGI keyword argument to FastCGI servers to
+ programmatically force CGI behavior.
+
* Merge Tommi Virtanen's "single server" (sequential server)
patch.
diff --git a/flup/server/fcgi.py b/flup/server/fcgi.py
index d41b88f..ff03754 100644
--- a/flup/server/fcgi.py
+++ b/flup/server/fcgi.py
@@ -64,7 +64,7 @@ class WSGIServer(BaseFCGIServer, ThreadedServer):
def __init__(self, application, environ=None,
multithreaded=True, multiprocess=False,
bindAddress=None, umask=None, multiplexed=False,
- debug=True, roles=(FCGI_RESPONDER,), **kw):
+ debug=True, roles=(FCGI_RESPONDER,), forceCGI=False, **kw):
"""
environ, if present, must be a dictionary-like object. Its
contents will be copied into application's environ. Useful
@@ -87,7 +87,8 @@ class WSGIServer(BaseFCGIServer, ThreadedServer):
umask=umask,
multiplexed=multiplexed,
debug=debug,
- roles=roles)
+ roles=roles,
+ forceCGI=forceCGI)
for key in ('jobClass', 'jobArgs'):
if kw.has_key(key):
del kw[key]
diff --git a/flup/server/fcgi_base.py b/flup/server/fcgi_base.py
index 3c059f5..31e0ac6 100644
--- a/flup/server/fcgi_base.py
+++ b/flup/server/fcgi_base.py
@@ -902,7 +902,8 @@ class BaseFCGIServer(object):
def __init__(self, application, environ=None,
multithreaded=True, multiprocess=False,
bindAddress=None, umask=None, multiplexed=False,
- debug=True, roles=(FCGI_RESPONDER,)):
+ debug=True, roles=(FCGI_RESPONDER,),
+ forceCGI=False):
"""
bindAddress, if present, must either be a string or a 2-tuple. If
present, run() will open its own listening socket. You would use
@@ -934,6 +935,7 @@ class BaseFCGIServer(object):
self.multiprocess = multiprocess
self.debug = debug
self.roles = roles
+ self.forceCGI = forceCGI
self._bindAddress = bindAddress
self._umask = umask
@@ -989,7 +991,7 @@ class BaseFCGIServer(object):
# if you want to run your app as a simple CGI. (You can do
# this with Apache's mod_env [not loaded by default in OS X
# client, ha ha] and the SetEnv directive.)
- if not isFCGI or \
+ if not isFCGI or self.forceCGI or \
os.environ.get('FCGI_FORCE_CGI', 'N').upper().startswith('Y'):
req = self.cgirequest_class(self)
req.run()
diff --git a/flup/server/fcgi_fork.py b/flup/server/fcgi_fork.py
index 53035a1..740e26b 100644
--- a/flup/server/fcgi_fork.py
+++ b/flup/server/fcgi_fork.py
@@ -51,7 +51,7 @@ __version__ = '$Revision$'
import os
-from flup.server.fcgi_base import BaseFCGIServer, \
+from flup.server.fcgi_base import BaseFCGIServer, FCGI_RESPONDER, \
FCGI_MAX_CONNS, FCGI_MAX_REQS, FCGI_MPXS_CONNS
from flup.server.preforkserver import PreforkServer
@@ -64,7 +64,7 @@ class WSGIServer(BaseFCGIServer, PreforkServer):
"""
def __init__(self, application, environ=None,
bindAddress=None, umask=None, multiplexed=False,
- debug=True, **kw):
+ debug=True, roles=(FCGI_RESPONDER,), forceCGI=False, **kw):
"""
environ, if present, must be a dictionary-like object. Its
contents will be copied into application's environ. Useful
@@ -86,7 +86,9 @@ class WSGIServer(BaseFCGIServer, PreforkServer):
bindAddress=bindAddress,
umask=umask,
multiplexed=multiplexed,
- debug=debug)
+ debug=debug,
+ roles=roles,
+ forceCGI=forceCGI)
for key in ('multithreaded', 'multiprocess', 'jobClass', 'jobArgs'):
if kw.has_key(key):
del kw[key]
diff --git a/flup/server/fcgi_single.py b/flup/server/fcgi_single.py
index 5c9367a..c2e63ff 100644
--- a/flup/server/fcgi_single.py
+++ b/flup/server/fcgi_single.py
@@ -64,7 +64,7 @@ class WSGIServer(BaseFCGIServer, SingleServer):
"""
def __init__(self, application, environ=None,
bindAddress=None, umask=None, multiplexed=False,
- debug=True, roles=(FCGI_RESPONDER,), **kw):
+ debug=True, roles=(FCGI_RESPONDER,), forceCGI=False, **kw):
"""
environ, if present, must be a dictionary-like object. Its
contents will be copied into application's environ. Useful
@@ -87,7 +87,8 @@ class WSGIServer(BaseFCGIServer, SingleServer):
umask=umask,
multiplexed=multiplexed,
debug=debug,
- roles=roles)
+ roles=roles,
+ forceCGI=forceCGI)
for key in ('jobClass', 'jobArgs'):
if kw.has_key(key):
del kw[key]