[Checkins] SVN: Sandbox/J1m/resumelb/src/zc/resumelb/worker. When computing resume scores, don't count time waiting for threads.
Jim Fulton
jim at zope.com
Sat Feb 25 19:35:35 UTC 2012
Log message for revision 124476:
When computing resume scores, don't count time waiting for threads.
That's already taken into account in the lb backlog calculations.
Changed:
U Sandbox/J1m/resumelb/src/zc/resumelb/worker.py
U Sandbox/J1m/resumelb/src/zc/resumelb/worker.test
-=-
Modified: Sandbox/J1m/resumelb/src/zc/resumelb/worker.py
===================================================================
--- Sandbox/J1m/resumelb/src/zc/resumelb/worker.py 2012-02-25 14:23:57 UTC (rev 124475)
+++ Sandbox/J1m/resumelb/src/zc/resumelb/worker.py 2012-02-25 19:35:34 UTC (rev 124476)
@@ -50,6 +50,7 @@
def call_app(rno, env):
response = [0]
+ env['zc.resumelb.time'] = time.time()
def start_response(status, headers, exc_info=None):
assert not exc_info # XXX
response[0] = (status, headers)
@@ -129,7 +130,6 @@
if rput is None:
if data:
env = data
- env['zc.resumelb.time'] = time.time()
env['zc.resumelb.lb_addr'] = addr
gevent.spawn(
self.handle, conn, rno, conn.start(rno), env)
Modified: Sandbox/J1m/resumelb/src/zc/resumelb/worker.test
===================================================================
--- Sandbox/J1m/resumelb/src/zc/resumelb/worker.test 2012-02-25 14:23:57 UTC (rev 124475)
+++ Sandbox/J1m/resumelb/src/zc/resumelb/worker.test 2012-02-25 19:35:34 UTC (rev 124476)
@@ -502,7 +502,7 @@
>>> with mock.patch('datetime.datetime') as dtmock:
... dtmock.now.side_effect = lambda : now
... worker = zc.resumelb.worker.Worker(
- ... zc.resumelb.tests.app(), ('127.0.0.1', 0), dict(history=5),
+ ... zc.resumelb.tests.app(), ('127.0.0.1', 0), dict(history=2),
... tracelog='tracelog', threads=1)
>>> worker_socket = gevent.socket.create_connection(worker.addr)
@@ -554,6 +554,19 @@
E 1 2012-02-05 01:02:03.030456
(1, ('200 OK', [...('Content-Length', '12')]))
+Also, note that the worker score is based on the time spent in app. It
+doesn't include time waiting. We can see this when the worker sends
+us it's resume:
+
+ >>> _ = read_message(worker_socket), read_message(worker_socket)
+ >>> _, resume = read_message(worker_socket)
+ >>> [(_, score)] = resume.items()
+ >>> score > 7.0
+ True
+
+(If we started computing elapsed time when we started waiting for a
+thread, the score would be less than 2/(.1+.2).)
+
Cleanup:
>>> logger.removeHandler(handler)
More information about the checkins
mailing list