[Checkins] SVN: zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/ Move the status onto the pool so overridden pool classes can export arbitrary

Brian Sutherland cvs-admin at zope.org
Tue Jul 24 09:01:53 UTC 2012


Log message for revision 127385:
  Move the status onto the pool so overridden pool classes can export arbitrary
  data over the status server.
  

Changed:
  U   zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/lb.py
  U   zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/tests.py
  U   zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/zk.py

-=-
Modified: zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/lb.py
===================================================================
--- zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/lb.py	2012-07-24 08:37:33 UTC (rev 127384)
+++ zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/lb.py	2012-07-24 09:01:50 UTC (rev 127385)
@@ -330,6 +330,21 @@
             worker.backlog -= 1
             _decay_backlog(worker, self.worker_decay)
 
+    def status(self):
+        return dict(
+                backlog = self.backlog,
+                mean_backlog = self.mbacklog,
+                workers = [
+                    (worker.__name__,
+                     worker.backlog,
+                     worker.mbacklog,
+                     (int(worker.oldest_time)
+                      if worker.oldest_time else None),
+                     )
+                    for worker in sorted(
+                        self.workers, key=lambda w: w.__name__)
+                    ])
+
 def _init_backlog(worker):
     worker.backlog = worker.nbacklog = worker.dbacklog = worker.mbacklog = 0
 

Modified: zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/tests.py
===================================================================
--- zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/tests.py	2012-07-24 08:37:33 UTC (rev 127384)
+++ zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/tests.py	2012-07-24 09:01:50 UTC (rev 127385)
@@ -297,6 +297,23 @@
 
     """
 
+def pool_status():
+    """
+    We can ask the pool for it's status. It will give us back a dictionary.
+
+    >>> worker = mock.Mock()
+    >>> worker.__name__ = 'foo'
+    >>> worker.oldest_time = 1.0
+    >>> pool = zc.resumelb.lb.Pool()
+    >>> pool.new_resume(worker, {})
+
+    >>> status = pool.status()
+    >>> status['backlog']
+    0
+    >>> status['workers'][0][0]
+    'foo'
+    """
+
 def test_classifier(env):
     return "yup, it's a test"
 

Modified: zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/zk.py
===================================================================
--- zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/zk.py	2012-07-24 08:37:33 UTC (rev 127384)
+++ zc.resumelb/branches/jinty-external-pool/src/zc/resumelb/zk.py	2012-07-24 09:01:50 UTC (rev 127385)
@@ -267,22 +267,9 @@
     if options.status_server:
         def status(socket, addr):
             pool = lb.pool
+            status = pool.status()
             writer = socket.makefile('w')
-            writer.write(json.dumps(
-                dict(
-                    backlog = pool.backlog,
-                    mean_backlog = pool.mbacklog,
-                    workers = [
-                        (worker.__name__,
-                         worker.backlog,
-                         worker.mbacklog,
-                         (int(worker.oldest_time)
-                          if worker.oldest_time else None),
-                         )
-                        for worker in sorted(
-                            pool.workers, key=lambda w: w.__name__)
-                        ]
-                    ))+'\n')
+            writer.write(json.dumps(status) + '\n')
             writer.close()
             socket.close()
 



More information about the checkins mailing list