summaryrefslogtreecommitdiffstats
path: root/module/network/Keepalive.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/network/Keepalive.py')
-rw-r--r--module/network/Keepalive.py46
1 files changed, 23 insertions, 23 deletions
diff --git a/module/network/Keepalive.py b/module/network/Keepalive.py
index 68abe087d..dbf4d94cb 100644
--- a/module/network/Keepalive.py
+++ b/module/network/Keepalive.py
@@ -9,9 +9,9 @@
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc.,
-# 59 Temple Place, Suite 330,
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330,
# Boston, MA 02111-1307 USA
# This file is part of urlgrabber, a high-level cross-protocol url-grabber
@@ -24,7 +24,7 @@
>>> keepalive_handler = HTTPHandler()
>>> opener = urllib2.build_opener(keepalive_handler)
>>> urllib2.install_opener(opener)
->>>
+>>>
>>> fo = urllib2.urlopen('http://www.python.org')
If a connection to a given host is requested, and all of the existing
@@ -113,7 +113,7 @@ import sslfactory
import sys
if sys.version_info < (2, 4): HANDLE_ERRORS = 1
else: HANDLE_ERRORS = 0
-
+
class ConnectionManager:
"""
The connection manager must be able to:
@@ -153,7 +153,7 @@ class ConnectionManager:
def set_ready(self, connection, ready):
try: self._readymap[connection] = ready
except KeyError: pass
-
+
def get_ready_conn(self, host):
conn = None
self._lock.acquire()
@@ -177,7 +177,7 @@ class ConnectionManager:
class KeepAliveHandler:
def __init__(self):
self._cm = ConnectionManager()
-
+
#### Connection Management
def open_connections(self):
"""return a list of connected hosts and the number of connections
@@ -191,14 +191,14 @@ class KeepAliveHandler:
for h in self._cm.get_all(host):
self._cm.remove(h)
h.close()
-
+
def close_all(self):
"""close all open connections"""
for host, conns in self._cm.get_all().items():
for h in conns:
self._cm.remove(h)
h.close()
-
+
def _request_closed(self, request, host, connection):
"""tells us that this request is now closed and the the
connection is ready for another request"""
@@ -207,7 +207,7 @@ class KeepAliveHandler:
def _remove_connection(self, host, connection, close=0):
if close: connection.close()
self._cm.remove(connection)
-
+
#### Transaction Execution
def do_open(self, req):
host = req.get_host()
@@ -238,7 +238,7 @@ class KeepAliveHandler:
r = h.getresponse()
except (socket.error, httplib.HTTPException), err:
raise urllib2.URLError(err)
-
+
# if not a persistent connection, don't try to reuse it
if r.will_close: self._cm.remove(h)
@@ -250,7 +250,7 @@ class KeepAliveHandler:
r.code = r.status
r.headers = r.msg
r.msg = r.reason
-
+
if r.status == 200 or not HANDLE_ERRORS:
return r
else:
@@ -286,7 +286,7 @@ class KeepAliveHandler:
self._cm.remove(h)
h.close()
raise
-
+
if r is None or r.version == 9:
# httplib falls back to assuming HTTP 0.9 if it gets a
# bad header back. This is most likely to happen if
@@ -342,7 +342,7 @@ class HTTPSHandler(KeepAliveHandler, urllib2.HTTPSHandler):
if not ssl_factory:
ssl_factory = sslfactory.get_factory()
self._ssl_factory = ssl_factory
-
+
def https_open(self, req):
return self.do_open(req)
@@ -367,7 +367,7 @@ class HTTPResponse(httplib.HTTPResponse):
# although read() never adds to the buffer.
# Both readline and readlines have been stolen with almost no
# modification from socket.py
-
+
def __init__(self, sock, debuglevel=0, strict=0, method=None):
if method: # the httplib in python 2.3 uses the method arg
@@ -396,7 +396,7 @@ class HTTPResponse(httplib.HTTPResponse):
def close_connection(self):
self._handler._remove_connection(self._host, self._connection, close=1)
self.close()
-
+
def info(self):
return self.headers
@@ -453,7 +453,7 @@ class HTTPConnection(httplib.HTTPConnection):
class HTTPSConnection(httplib.HTTPSConnection):
response_class = HTTPResponse
-
+
#########################################################################
##### TEST FUNCTIONS
#########################################################################
@@ -487,7 +487,7 @@ def error_handler(url):
def continuity(url):
import md5
format = '%25s: %s'
-
+
# first fetch the file with the normal http handler
opener = urllib2.build_opener()
urllib2.install_opener(opener)
@@ -534,7 +534,7 @@ def comp(N, url):
t2 = fetch(N, url)
print ' TIME: %.3f s' % t2
print ' improvement factor: %.2f' % (t1/t2, )
-
+
def fetch(N, url, delay=0):
import time
lens = []
@@ -566,7 +566,7 @@ def test_timeout(url):
fo = urllib2.urlopen(url)
data1 = fo.read()
fo.close()
-
+
i = 20
print " waiting %i seconds for the server to close the connection" % i
while i > 0:
@@ -588,7 +588,7 @@ def test_timeout(url):
DEBUG = dbbackup
-
+
def test(url, N=10):
print "checking error hander (do this on a non-200)"
try: error_handler(url)
@@ -604,7 +604,7 @@ def test(url, N=10):
print
print "performing dropped-connection check"
test_timeout(url)
-
+
if __name__ == '__main__':
import time
import sys
@@ -614,4 +614,4 @@ if __name__ == '__main__':
except:
print "%s <integer> <url>" % sys.argv[0]
else:
- test(url, N)
+ test(url, N) \ No newline at end of file