All pastes #1929118 Raw Edit

Miscellany

public python v1 · immutable
#1929118 ·published 2010-08-30 16:21 UTC
rendered paste body
--- /home/wwwnick/Downloads/SDService.py	2010-08-30 18:12:44.401195927 +0200+++ /usr/lib/python2.6/site-packages/subdownloader/modules/SDService.py	2010-08-30 18:15:09.493198194 +0200@@ -6,6 +5,7 @@ import StringIO, gzip, zlib import logging import threading, thread+import sys log = logging.getLogger("subdownloader.WebService")      from modules import APP_TITLE, APP_VERSION@@ -18,29 +18,40 @@ DEFAULT_PROXY = 'http://w2.hidemyass.com/' USER_AGENT = "%s %s"% (APP_TITLE, APP_VERSION) -def test_connection(url, timeout=15):+def test_connection(url, timeout=300):     import socket, urllib2     defTimeOut=socket.getdefaulttimeout()     socket.setdefaulttimeout(timeout)-    connectable=True+    connectable=False     try:-        urllib2.urlopen(url)-    except (urllib2.HTTPError, urllib2.URLError, socket.error, socket.sslerror):-        connectable=False+       	urllib2.urlopen(url)+	log.debug("successfully tested connection")+	connectable=True+    except urllib2.HTTPError, e:+       	log.error('The server couldn\'t fulfill the request. Error code: '% e.code)+    except urllib2.URLError, e:+       	log.error('We failed to reach a server. Reason: %s '% e.reason)+    except socket.error, (value,message):+       	log.error("Could not open socket: %s"% message)+    except socket.sslerror, (value,message):+       	log.error("Could not open ssl socket: %s"% message)     socket.setdefaulttimeout(defTimeOut)     return connectable + class TimeoutFunctionException(Exception):      """Exception to raise on a timeout"""      pass   class TimeoutFunction:  -    def __init__(self, function, timeout=30): +    def __init__(self, function, timeout=15): +	self.log = logging.getLogger("subdownloader.SDService.TimeoutFunction")         self.timeout = timeout          self.function = function       def handle_timeout(self): +	self.log.debug("exception in timeouted function %s"%self.function)         raise TimeoutFunctionException()      def __call__(self, *args): @@ -50,6 +61,8 @@         try:              t.start()             result = self.function(*args)+	except Exception, e:+	    raise e         finally:              #signal.signal(signal.SIGALRM, old)             t.cancel()@@ -63,13 +76,13 @@     """ Used for proxied connections to the XMLRPC server     """     def __init__(self):-        #self.log = logging.getLogger("subdownloader.OSDBServer.ProxiedTransport")+        self.log = logging.getLogger("subdownloader.OSDBServer.ProxiedTransport")         self._use_datetime = True # annoying -> AttributeError: Main instance has no attribute '_use_datetime'     def set_proxy(self, proxy):         self.proxy = proxy-        #self.log.debug("Proxy set to: %s"% proxy)+        self.log.debug("Proxy set to: %s"% proxy)     def make_connection(self, host):-        #self.log.debug("Connecting to %s through %s"% (host, self.proxy))+        self.log.debug("Connecting to %s through %s"% (host, self.proxy))         self.realhost = host         h = httplib.HTTP(self.proxy)         return h@@ -118,13 +131,14 @@             raise e                  def create_xmlrpcserver(self, server, proxy):-        self.log.debug("Creating XMLRPC server connection...")+        self.log.debug("Creating XMLRPC server connection... to server %s with proxy %s" %(server,proxy))         try:             return self.connect(server, proxy)         except Exception, e:             raise e              def connect(self, server, proxy):+	connect=False         try:             self.log.debug("Connecting with parameters (%r, %r)" %(server, proxy))             connect = TimeoutFunction(self._connect)@@ -132,9 +146,12 @@         except TimeoutFunctionException, e:             self.log.error("Connection timed out. Maybe you need a proxy.")             raise e-        #except Exception, e:-            #import sys-            #self.log.error("Unexpected error: %s", sys.exc_info())+        except Exception, e:+            self.log.error("connect: Unexpected error: %s", sys.exc_info())+	    raise e+	finally:+	    self.log.debug("connection connected %s"%connect)+	    return connect      def _connect(self, server, proxy):         try:@@ -157,9 +174,15 @@                 self.log.debug("...failed")                 self.log.error("Unable to connect. Try setting a proxy.")                 return False+	except xmlrpclib.ProtocolError, e:+		self.log.debug("error in HTTP/HTTPS transport layer")+		raise e+	except xmlrpclib.Fault, e:+		self.log.debug("error in xml-rpc server")+		raise e         except Exception,e:-                    self.log.debug("Connection to the server failed")-                    raise e+                self.log.debug("Connection to the server failed/other error:%s"sys.exc_info())+                raise e              def is_connected(self):         """ @@ -170,7 +193,7 @@         return self._token != None              def ServerInfo(self):-        ServerInfo = TimeoutFunction(self._ServerInfo)+        ServerInfo = self._ServerInfo         try:             a = ServerInfo()             return a@@ -178,9 +201,9 @@             self.log.error("ServerInfo timed out")                      except Exception, e:-            #print type(e)     # the exception instance-            #print e.args      # arguments stored in .args-            #print e           # __str__ allows args to printed directly+            print type(e)     # the exception instance+            print e.args      # arguments stored in .args+            print e           # __str__ allows args to printed directly             self.log.error("ServerInfo error connection.")             raise e @@ -206,7 +229,10 @@         """          self.log.debug("----------------")         self.log.debug("Logging in (username: %s)..."% username)-        info = self.xmlrpc_server.LogIn(username, password, self.language, self.user_agent)+	try: +	        info = self.xmlrpc_server.LogIn(username, password, self.language, self.user_agent)+	except : +		self.log.debug("Unexpected error: %s", sys.exc_info()[0])         self.log.debug("Login ended in %s with status: %s"% (info['seconds'], info['status']))         if info['status'] == "200 OK":             self.log.debug("Session ID: %s"% info['token'])