@@ -55,7 +55,6 @@ def __init__(self):
5555 self .process = psutil .Process (os .getpid ())
5656 self .greenlet = gevent .getcurrent ()
5757 self .graceful_stop = None
58- self .pool_usage_average = 0
5958
6059 self .idle_event = gevent .event .Event ()
6160 self .idle_wait_count = 0
@@ -68,6 +67,7 @@ def __init__(self):
6867 self .name = "%s.%s" % (socket .gethostname ().split ("." )[0 ], os .getpid ())
6968
7069 self .pool_size = self .config ["greenlets" ]
70+ self .pool_usage_average = MovingAverage ((60 / self .config ["report_interval" ] or 1 ))
7171
7272 from .logger import LogHandler
7373 self .log_handler = LogHandler (quiet = self .config ["quiet" ])
@@ -227,16 +227,6 @@ def greenlet_subqueues(self):
227227
228228 time .sleep (self .config ["subqueues_refresh_interval" ])
229229
230- def greenlet_pool_usage_average (self , interval = 10 ):
231-
232- moving_average = MovingAverage (6 )
233-
234- while True :
235- free_pool_slots = self .gevent_pool .free_count ()
236- total_started = (self .pool_size - free_pool_slots )
237- self .pool_usage_average = moving_average .next (total_started )
238- time .sleep (interval )
239-
240230 def get_memory (self ):
241231 mmaps = self .process .get_memory_maps ()
242232 mem = {
@@ -316,11 +306,13 @@ def get_worker_report(self, with_memory=False):
316306 else :
317307 io [k ] = sorted (v .items (), reverse = True , key = lambda x : x [1 ])
318308
309+ used_pool_slots = self .gevent_pool .free_count () - self .pool_size
310+
319311 return {
320312 "status" : self .status ,
321313 "config" : {k : v for k , v in self .config .iteritems () if k in whitelisted_config },
322314 "done_jobs" : self .done_jobs ,
323- "pool_usage_average" : self .pool_usage_average ,
315+ "pool_usage_average" : self .pool_usage_average . next ( used_pool_slots ) ,
324316 "datestarted" : self .datestarted ,
325317 "datereported" : datetime .datetime .utcnow (),
326318 "name" : self .name ,
@@ -430,8 +422,6 @@ def work_init(self):
430422
431423 self .greenlets ["logs" ] = gevent .spawn (self .greenlet_logs )
432424
433- self .greenlets ["pool_usage_average" ] = gevent .spawn (self .greenlet_pool_usage_average )
434-
435425 if self .config ["scheduler" ]:
436426 self .greenlets ["scheduler" ] = gevent .spawn (self .greenlet_scheduler )
437427
0 commit comments