summaryrefslogtreecommitdiff
path: root/paste/cgiapp.py
diff options
context:
space:
mode:
authorianb <devnull@localhost>2005-11-22 03:18:41 +0000
committerianb <devnull@localhost>2005-11-22 03:18:41 +0000
commit248156b6d2119408aef75b3f316b060f1baece10 (patch)
tree75f622a794c8b3b156e57ea9b29e130f7ddc9bbc /paste/cgiapp.py
parent4bca409ce4bd1617e9c0dfaa9d7b75729a8b93f6 (diff)
downloadpaste-248156b6d2119408aef75b3f316b060f1baece10.tar.gz
Hopefully maybe make this Windows compatible
Diffstat (limited to 'paste/cgiapp.py')
-rw-r--r--paste/cgiapp.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/paste/cgiapp.py b/paste/cgiapp.py
index 4b1b5eb..9843e9a 100644
--- a/paste/cgiapp.py
+++ b/paste/cgiapp.py
@@ -6,7 +6,10 @@ Application that runs a CGI script.
"""
import os
import subprocess
-import select
+try:
+ import select
+except ImportError:
+ select = None
from paste.deploy import converters
__all__ = ['CGIError', 'CGIApplication']
@@ -84,11 +87,17 @@ class CGIApplication(object):
cwd=os.path.dirname(self.script),
)
writer = CGIWriter(environ, start_response)
- proc_communicate(
- proc,
- stdin=StdinReader.from_environ(environ),
- stdout=writer,
- stderr=environ['wsgi.errors'])
+ if select:
+ proc_communicate(
+ proc,
+ stdin=StdinReader.from_environ(environ),
+ stdout=writer,
+ stderr=environ['wsgi.errors'])
+ else:
+ stdout, stderr = proc.communicate(StdinReader.from_environ(environ).read())
+ if stderr:
+ environ['wsgi.errors'].write(stderr)
+ writer(stdout)
if not writer.headers_finished:
start_response(writer.status, writer.headers)
return []