|
@@ -269,12 +269,11 @@ class AgentOperService:
|
|
|
self.agent_actionlog_service = AgentActionLogService(app)
|
|
|
self.agent_state_service = AgentStateService(app)
|
|
|
|
|
|
- # self.daemon_stopping = False
|
|
|
self.agent_heartbeat_expire = 30
|
|
|
+ self.agent_serial_live_expire = 60*10
|
|
|
self.agent_heartbeat_job_scheduler = BackgroundScheduler()
|
|
|
self.agent_heartbeat_job_scheduler.add_job(self.agent_heartbeat_daemon, 'interval', seconds=1, max_instances=1, name='agent_heartbeat_daemon')
|
|
|
self.agent_heartbeat_job_scheduler.start()
|
|
|
- # threading.Thread(target=self.agent_heartbeat_daemon).start()
|
|
|
|
|
|
def agent_heartbeat_daemon(self):
|
|
|
def check_out_daemon(_name, key, value):
|
|
@@ -287,20 +286,33 @@ class AgentOperService:
|
|
|
except:
|
|
|
traceback.print_exc()
|
|
|
|
|
|
- # while not self.daemon_stopping:
|
|
|
+ def check_agent_live_daemon(_members):
|
|
|
+ key = '' % SAAS_ID
|
|
|
+ pre_val = self.redis_handler.redis.get(key)
|
|
|
+ if not pre_val:
|
|
|
+ if not _members or len(_members) == 0:
|
|
|
+ value = datetime.now().timestamp()
|
|
|
+ self.redis_handler.redis.set(key, value, ex=60*60, nx=True)
|
|
|
+ else:
|
|
|
+ diff = datetime.now().timestamp() - float(pre_val)
|
|
|
+ if diff > self.agent_serial_live_expire:
|
|
|
+ self.logger.warn('WARING::live agent count less than 1 serial ten minutes')
|
|
|
+
|
|
|
+ if _members and len(_members) > 0:
|
|
|
+ self.redis_handler.redis.delete(key)
|
|
|
+
|
|
|
name = CENTER_AGENT_HEARTBEAT % SAAS_ID
|
|
|
members = self.redis_handler.redis.hgetall(name)
|
|
|
+ check_agent_live_daemon(members)
|
|
|
if not members:
|
|
|
return
|
|
|
|
|
|
registry.MANUAL_AGENT_LIVES.set(len(members))
|
|
|
for k,v in members.items():
|
|
|
check_out_daemon(name, k, v)
|
|
|
- # time.sleep(1)
|
|
|
|
|
|
def __del__(self):
|
|
|
self.agent_heartbeat_job_scheduler.shutdown()
|
|
|
- # self.daemon_stopping = True
|
|
|
|
|
|
@with_app_context
|
|
|
def enable(self, req: AgentActionRequest):
|