DavidLiu 3 ay önce
ebeveyn
işleme
3b85f3037e
1 değiştirilmiş dosya ile 22 ekleme ve 14 silme
  1. 22 14
      src/core/voip/bot.py

+ 22 - 14
src/core/voip/bot.py

@@ -330,9 +330,9 @@ class MyCall(pj.Call):
             self.logger.info(f"Sending bot speaker, 222, player_file: {player_file}, player_id: {player_id}, isActive: {self.isActive()}")
             self.audio_player.createPlayer(player_file[0], pj.PJMEDIA_FILE_NO_LOOP)
         else:
-            self.logger.info(f"Sending bot speaker, 222, player_file: {player_file}, player_id: {player_id}, isActive: {self.isActive()}")
+            self.logger.info(f"Sending bot speaker, 333, player_file: {player_file}, player_id: {player_id}, isActive: {self.isActive()}")
             self.audio_player.createPlaylist(player_file, f'my_hello_playlist{player_id}', pj.PJMEDIA_FILE_NO_LOOP)
-        self.logger.info(f"Sending bot speaker, 333, player_file: {player_file}, player_id: {player_id}, isActive: {self.isActive()}")
+        self.logger.info(f"Sending bot speaker, 444, player_file: {player_file}, player_id: {player_id}, isActive: {self.isActive()}")
         self.audio_player.startTransmit(self.audio_media)
 
     def on_receiver_asr_result(self, message, *args):
@@ -538,6 +538,7 @@ class BotAgent:
         self.accounts = {}
         self.calls = {}
         self.ep = pj.Endpoint()
+        self.daemon_stopping = False
         self.is_stopping = False
         self.counter = 0
         self.acd_service = None
@@ -545,6 +546,7 @@ class BotAgent:
         self.dataHandleServer = DataHandleServer(app)
         self.pjsua_thread = None
         self.start()
+        threading.Thread(target=self.thread_health_check).start()
 
     def create_pjsua2(self, timeout_sec=86400):
         start_time = time.time()
@@ -610,19 +612,24 @@ class BotAgent:
 
         while not self.is_stopping:
             registry.BOT_AGENT_LIVES.set(self.user_part_pool.qsize())
-            self.thread_health_check()
+            # self.thread_health_check()
             self.ep.libHandleEvents(50)
 
-    def thread_health_check(self):
-        _lock = self.cache.get_pjsua_thread_lock()
-        if _lock:
-            self.logger.error("daviddebugger::thread is lock, will restart")
-            self.restart()
+        # Destroy the library
+        self.ep.libDestroy()
 
-        _lock = self.cache.lock_register_per_hours()
-        if not _lock and len(self.accounts) == len(self.user_part_range):
-            self.logger.error("daviddebugger::register expire, will restart")
-            self.restart()
+    def thread_health_check(self):
+        while not self.daemon_stopping:
+            _lock = self.cache.get_pjsua_thread_lock()
+            if _lock:
+                self.logger.error("daviddebugger::thread is lock, will restart")
+                self.restart()
+
+            _lock = self.cache.lock_register_per_hours()
+            if not _lock and len(self.accounts) == len(self.user_part_range):
+                self.logger.error("daviddebugger::register expire, will restart")
+                self.restart()
+            time.sleep(0.1)
 
     def transfer(self, user_part, call_id, device_id, service_id='00000000000000000'):
         if self.acd_service:
@@ -728,8 +735,8 @@ class BotAgent:
         self.logger.info("destroy, come in 22222")
         self.accounts.clear()
         self.calls.clear()
-        # Destroy the library
-        self.ep.libDestroy()
+        # # Destroy the library
+        # self.ep.libDestroy()
         self.logger.info("destroy, come in 33333")
 
         if not self.pjsua_thread.is_alive():
@@ -750,6 +757,7 @@ class BotAgent:
 
     def __del__(self):
         self.destroy()
+        self.daemon_stopping = True
 
 
 # if __name__ == '__main__':