[Checkins] SVN: Sandbox/J1m/resumelb/src/zc/resumelb/ Refactor to use zc.resumelb.util.Disconnected to signal disconnected

Jim Fulton jim at zope.com
Sun Jan 22 13:35:25 UTC 2012


Log message for revision 124127:
  Refactor to use zc.resumelb.util.Disconnected to signal disconnected
  connections.
  

Changed:
  U   Sandbox/J1m/resumelb/src/zc/resumelb/lb.py
  U   Sandbox/J1m/resumelb/src/zc/resumelb/util.py
  U   Sandbox/J1m/resumelb/src/zc/resumelb/worker.py

-=-
Modified: Sandbox/J1m/resumelb/src/zc/resumelb/lb.py
===================================================================
--- Sandbox/J1m/resumelb/src/zc/resumelb/lb.py	2012-01-22 13:28:01 UTC (rev 124126)
+++ Sandbox/J1m/resumelb/src/zc/resumelb/lb.py	2012-01-22 13:35:24 UTC (rev 124127)
@@ -51,7 +51,7 @@
                 result = worker.handle(rclass, env, start_response)
                 self.pool.put(worker)
                 return result
-            except worker.Disconnected:
+            except zc.resumelb.util.Disconnected:
                 # XXX need to be more careful about whether
                 # start_response was called.
                 if (int(env.get('CONTENT_LENGTH', 0)) == 0 and
@@ -240,7 +240,7 @@
         while self.is_connected:
             try:
                 rno, data = zc.resumelb.util.read_message(socket)
-            except gevent.GreenletExit:
+            except zc.resumelb.util.Disconnected:
                 self.disconnected()
                 return
 
@@ -279,7 +279,7 @@
 
         data = get()
         if data is None:
-            raise self.Disconnected()
+            raise zc.resumelb.util.Disconnected()
         logger.debug('start_response %r', data)
         start_response(*data)
 
@@ -290,7 +290,7 @@
                     logger.debug('yield %r', data)
                     yield data
                 elif data is None:
-                    raise self.Disconnected()
+                    raise zc.resumelb.util.Disconnected()
                 else:
                     self.end(rno)
                     break

Modified: Sandbox/J1m/resumelb/src/zc/resumelb/util.py
===================================================================
--- Sandbox/J1m/resumelb/src/zc/resumelb/util.py	2012-01-22 13:28:01 UTC (rev 124126)
+++ Sandbox/J1m/resumelb/src/zc/resumelb/util.py	2012-01-22 13:35:24 UTC (rev 124127)
@@ -10,13 +10,16 @@
 disconnected_errors = (errno.EPIPE, errno.ECONNRESET, errno.ENOTCONN,
                  errno.ESHUTDOWN, errno.ECONNABORTED)
 
+class Disconnected(Exception):
+    pass
+
 def read_message(sock):
     data = ''
     while len(data) < 8:
         recieved = sock.recv(8-len(data))
         if not recieved:
             logger.info("read_message disconnected %s", sock)
-            raise gevent.GreenletExit()
+            raise Disconnected()
         data += recieved
 
     rno, l = unpack(">II", data)
@@ -26,7 +29,7 @@
         recieved = sock.recv(l-len(data))
         if not recieved:
             logger.info("read_message disconnected %s", sock)
-            raise gevent.GreenletExit()
+            raise Disconnected()
         data += recieved
 
     return rno, marshal.loads(data)
@@ -45,7 +48,7 @@
         except socket.error, err:
             if err.args[0] in disconnected_errors:
                 logger.debug("write_message disconnected %s", sock)
-                raise gevent.GreenletExit()
+                raise Disconnected()
             else:
                 raise
         data = data[sent:]
@@ -55,7 +58,7 @@
         rno, data = writeq.get()
         try:
             write_message(sock, rno, data)
-        except gevent.GreenletExit:
+        except Disconnected:
             multiplexer.disconnected()
             return
 
@@ -84,11 +87,8 @@
     def end(self, rno):
         del self.readers[rno]
 
-    class Disconnected(Exception):
-        pass
-
     def put_disconnected(self, *a, **k):
-        raise self.Disconnected()
+        raise Disconnected()
 
     def disconnected(self):
         logger.info('worker disconnected %s', self.addr)

Modified: Sandbox/J1m/resumelb/src/zc/resumelb/worker.py
===================================================================
--- Sandbox/J1m/resumelb/src/zc/resumelb/worker.py	2012-01-22 13:28:01 UTC (rev 124126)
+++ Sandbox/J1m/resumelb/src/zc/resumelb/worker.py	2012-01-22 13:35:24 UTC (rev 124127)
@@ -50,7 +50,7 @@
             while conn.is_connected:
                 try:
                     rno, data = zc.resumelb.util.read_message(sock)
-                except gevent.GreenletExit:
+                except zc.resumelb.util.Disconnected:
                     conn.disconnected()
                     self.connections.remove(conn)
                     return
@@ -120,7 +120,7 @@
                         for (rclass, (sum, n)) in byrclass.iteritems()
                         ))
 
-            except conn.Disconnected:
+            except zc.resumelb.util.Disconnected:
                 return # whatever
         except:
             error('handle_connection')
@@ -133,7 +133,7 @@
             if conn.is_connected:
                 try:
                     conn.put((0, resume))
-                except conn.Disconnected:
+                except zc.resumelb.util.Disconnected:
                     pass
 
 



More information about the checkins mailing list