summaryrefslogtreecommitdiff
path: root/wsgitools/scgi
diff options
context:
space:
mode:
Diffstat (limited to 'wsgitools/scgi')
-rw-r--r--wsgitools/scgi/asynchronous.py13
-rw-r--r--wsgitools/scgi/forkpool.py14
2 files changed, 20 insertions, 7 deletions
diff --git a/wsgitools/scgi/asynchronous.py b/wsgitools/scgi/asynchronous.py
index 9fedb87..33d5130 100644
--- a/wsgitools/scgi/asynchronous.py
+++ b/wsgitools/scgi/asynchronous.py
@@ -4,9 +4,16 @@ import asyncore
import socket
import sys
try:
- import cStringIO as StringIO
+ import io
except ImportError:
- import StringIO
+ try:
+ import cStringIO as io
+ except ImportError:
+ import StringIO as io
+try:
+ long
+except NameError:
+ long = int
class SCGIConnection(asyncore.dispatcher):
"""SCGI connection class used by L{SCGIServer}."""
@@ -32,7 +39,7 @@ class SCGIConnection(asyncore.dispatcher):
self.wsgihandler = None # wsgi application iterator
self.outheaders = () # headers to be sent
# () -> unset, (..,..) -> set, True -> sent
- self.body = StringIO.StringIO() # request body
+ self.body = io.StringIO() # request body
def _wsgi_headers(self):
return {"wsgi.version": (1, 0),
diff --git a/wsgitools/scgi/forkpool.py b/wsgitools/scgi/forkpool.py
index 26de9ef..b913190 100644
--- a/wsgitools/scgi/forkpool.py
+++ b/wsgitools/scgi/forkpool.py
@@ -11,6 +11,11 @@ import select
import sys
import errno
+try:
+ long
+except NameError:
+ long = int
+
class SocketFileWrapper:
"""Wraps a socket to a wsgi-compliant file-like object."""
def __init__(self, sock, toread):
@@ -153,7 +158,8 @@ class SocketFileWrapper:
return
def writelines(self, lines):
"""see pep333"""
- map(self.write, lines)
+ for line in lines:
+ self.write(line)
class SCGIServer:
"""Usage: create an L{SCGIServer} object and invoke the run method which
@@ -228,7 +234,7 @@ class SCGIServer:
elif data in ('0', '1'):
self.workers[s].state = int(data)
else:
- raise RuntimeError, "unexpected data from worker"
+ raise RuntimeError("unexpected data from worker")
try:
pid = 1
while pid > 0:
@@ -263,7 +269,7 @@ class SCGIServer:
self.workers[srvsock.fileno()] = SCGIServer.\
WorkerState(pid, srvsock, 0)
else:
- raise RuntimeError, "fork failed"
+ raise RuntimeError("fork failed")
def work(self, worksock):
"""
@@ -299,7 +305,7 @@ class SCGIServer:
if not length.isdigit(): # clear protocol violation
con.close()
return
- length = long(length)
+ length = int(length)
while len(data) != length + 1: # read one byte beyond
try: