@@ -17,6 +17,7 @@ def __init__(self, worker_group=None):
1717 self .id = ObjectId ()
1818 self .worker_group = worker_group or get_current_config ()["worker_group" ]
1919 self .pool = ProcessPool ()
20+ self .config = get_current_config ()
2021
2122 def work (self ):
2223
@@ -50,7 +51,7 @@ def greenlet_manage(self):
5051 try :
5152 self .manage ()
5253 except Exception as e : # pylint: disable=broad-except
53- self . log .error ("When reporting: %s" % e )
54+ log .error ("When reporting: %s" % e )
5455 finally :
5556 time .sleep (self .config ["report_interval" ])
5657
@@ -59,11 +60,13 @@ def manage(self):
5960 report = self .get_agent_report ()
6061
6162 try :
62- db = self .mongodb_jobs .mrq_agents .find_and_modify ({
63+ db = connections .mongodb_jobs .mrq_agents .find_and_modify ({
6364 "_id" : ObjectId (self .id )
6465 }, {"$set" : report }, upsert = True )
66+ if not db :
67+ return
6568 except Exception as e : # pylint: disable=broad-except
66- self . log .debug ("Agent report failed: %s" % e )
69+ log .debug ("Agent report failed: %s" % e )
6770 return
6871
6972 # If the desired_workers was changed by an orchestrator, apply the changes locally
@@ -74,16 +77,17 @@ def get_agent_report(self):
7477 report = {
7578 "current_workers" : [p ["command" ] for p in self .pool .processes ],
7679 "available_cpu" : get_current_config ()["available_cpu" ],
77- "available_memory" : get_current_config ()["available_memory" ]
80+ "available_memory" : get_current_config ()["available_memory" ],
81+ "worker_group" : self .worker_group
7882 }
7983 return report
8084
8185 def greenlet_orchestrate (self ):
8286
8387 while True :
84- with connections .redis .lock (self .redis_agent_orchestrator_key , timeout = 60 ):
88+ with connections .redis .lock (self .redis_agent_orchestrator_key , timeout = self . config [ "orchestrate_interval" ] + 10 ):
8589 self .orchestrate ()
86- time .sleep (30 )
90+ time .sleep (self . config [ "orchestrate_interval" ] )
8791
8892 @property
8993 def redis_agent_orchestrator_key (self ):
0 commit comments