From 3e52022980b266414d41cffe9b868edc0f97b11d Mon Sep 17 00:00:00 2001 From: Denis Bilenko Date: Mon, 17 Nov 2008 13:12:58 +0600 Subject: [PATCH] added get_timers_count() functions to hubs (for debugging). removed some dead or useless code from twistedr.py --- eventlet/hubs/hub.py | 5 ++++ eventlet/hubs/twistedr.py | 56 ++++++++------------------------------- 2 files changed, 16 insertions(+), 45 deletions(-) diff --git a/eventlet/hubs/hub.py b/eventlet/hubs/hub.py index 09c0f9c..74f2809 100644 --- a/eventlet/hubs/hub.py +++ b/eventlet/hubs/hub.py @@ -321,6 +321,8 @@ class BaseHub(object): except KeyError: pass + # for debugging: + def get_readers(self): return self.readers @@ -330,3 +332,6 @@ class BaseHub(object): def get_excs(self): return self.excs + def get_timers_count(hub): + return max(len(x) for x in [hub.timers, hub.timers_by_greenlet.items(), hub.next_timers]) + diff --git a/eventlet/hubs/twistedr.py b/eventlet/hubs/twistedr.py index 4b6dc1a..ea19a58 100644 --- a/eventlet/hubs/twistedr.py +++ b/eventlet/hubs/twistedr.py @@ -6,7 +6,6 @@ from eventlet.hubs.hub import _g_debug from eventlet import greenlib from eventlet.support.greenlet import greenlet -from functools import wraps import traceback @@ -85,11 +84,6 @@ class BaseTwistedHub(object): from twisted.internet import reactor reactor.stop() - def sleep(self, seconds=0): - from twisted.internet import reactor - d = reactor.callLater(seconds, greenlib.switch, greenlet.getcurrent()) - self.switch() - def add_descriptor(self, fileno, read=None, write=None, exc=None): from twisted.internet import reactor descriptor = socket_rwdescriptor(fileno, read, write, exc) @@ -119,8 +113,8 @@ class BaseTwistedHub(object): def schedule_call(self, seconds, func, *args, **kwargs): from twisted.internet import reactor - @wraps(func) - def wrap(*args, **kwargs): + + def call_func_finish_time(*args, **kwargs): try: return func(*args, **kwargs) finally: @@ -187,7 +181,12 @@ class BaseTwistedHub(object): from twisted.internet import reactor reactor.crash() - # for test cases: + @property + def running(self): + from twisted.internet import reactor + return reactor.running + + # for debugging: def get_readers(self): from twisted.internet import reactor @@ -202,10 +201,10 @@ class BaseTwistedHub(object): def get_excs(self): return [] - @property - def running(self): + def get_timers_count(self): from twisted.internet import reactor - return reactor.running + return len(reactor.getDelayedCalls()) + class TwistedHub(BaseTwistedHub): @@ -284,39 +283,6 @@ class TwistedHub(BaseTwistedHub): t = reactor.running and t2 reactor.doIteration(t) - def running_greenlets(self): - res = [] - for g in greenlib.tracked_greenlets(): - if g is self.greenlet: - continue - if hasattr(self.greenlet, 'parent') and g is self.greenlet.parent: - continue - res.append(g) - - def join(self, lst, timeout=None): - """Wait for other greenlets to finish""" - waiting = [1] -# if timeout is not None and self.running_greenlets(): -# def stop(): -# waiting[0] = 0 -# self.schedule_call(timeout, stop) - while True: - print 'WHILE!' - lst = [x for x in lst if not x.dead] - print 'WHILE!', lst - if not lst: - break # XXX collect return values - print 'WHILE! - before switch', lst[0], lst[0].parent - print 'WHILE! - before switch', greenlet.getcurrent(), greenlet.getcurrent().parent - print 'WHILE! - before switch', self.greenlet, getattr(self.greenlet, 'parent', '-') - for x in lst: - x.parent = greenlet.getcurrent() - print 'AWHILE! - before switch', lst[0], lst[0].parent - print 'AWHILE! - before switch', greenlet.getcurrent(), greenlet.getcurrent().parent - print 'AWHILE! - before switch', self.greenlet, getattr(self.greenlet, 'parent', '-') - res = self.switch() - print 'res=%r' % res - Hub = TwistedHub class DaemonicThread(threading.Thread):