|
@@ -14,6 +14,8 @@ from enum import Enum
|
|
|
from datetime import datetime
|
|
|
from multiprocessing import Process
|
|
|
|
|
|
+from apscheduler.schedulers.background import BackgroundScheduler
|
|
|
+
|
|
|
from src.core.callcenter import registry
|
|
|
from src.core.callcenter.cache import Cache
|
|
|
from src.core.datasource import SIP_SERVER, SERVE_HOST
|
|
@@ -519,7 +521,11 @@ class BotAgent:
|
|
|
self.dataHandleServer = DataHandleServer(app)
|
|
|
self.pjsua_thread = None
|
|
|
self.start()
|
|
|
- threading.Thread(target=self.main_thread_daemon).start()
|
|
|
+ # threading.Thread(target=self.main_thread_daemon).start()
|
|
|
+
|
|
|
+ self.daemon_job_scheduler = BackgroundScheduler()
|
|
|
+ self.daemon_job_scheduler.add_job(self.main_thread_daemon, 'interval', seconds=1, max_instances=1, name='bot_agent_daemon')
|
|
|
+ self.daemon_job_scheduler.start()
|
|
|
|
|
|
def create_pjsua2(self, timeout_sec=86400):
|
|
|
start_time = time.time()
|
|
@@ -585,7 +591,7 @@ class BotAgent:
|
|
|
|
|
|
while not self.is_stopping:
|
|
|
registry.BOT_AGENT_LIVES.set(self.user_part_pool.qsize())
|
|
|
- self.ep.libHandleEvents(100)
|
|
|
+ self.ep.libHandleEvents(200)
|
|
|
|
|
|
self.logger.info("create pjsua will shutdown 1111")
|
|
|
self.call_players.clear()
|
|
@@ -600,26 +606,26 @@ class BotAgent:
|
|
|
|
|
|
|
|
|
def main_thread_daemon(self):
|
|
|
- while not self.daemon_stopping:
|
|
|
- _lock = self._play_complete_degree_check()
|
|
|
- if _lock:
|
|
|
- self.logger.error("daviddebugger::play time greater than 60s, will restart")
|
|
|
- self.restart()
|
|
|
- continue
|
|
|
+ # while not self.daemon_stopping:
|
|
|
+ _lock = self._play_complete_degree_check()
|
|
|
+ if _lock:
|
|
|
+ self.logger.error("daviddebugger::play time greater than 60s, will restart")
|
|
|
+ self.restart()
|
|
|
+ return
|
|
|
|
|
|
- _lock = self.cache.get_pjsua_thread_lock()
|
|
|
- if _lock:
|
|
|
- self.cache.del_pjsua_thread_lock()
|
|
|
- self.logger.error("daviddebugger::thread is lock, will restart")
|
|
|
- self.restart()
|
|
|
- continue
|
|
|
+ _lock = self.cache.get_pjsua_thread_lock()
|
|
|
+ if _lock:
|
|
|
+ self.cache.del_pjsua_thread_lock()
|
|
|
+ self.logger.error("daviddebugger::thread is lock, will restart")
|
|
|
+ self.restart()
|
|
|
+ return
|
|
|
|
|
|
- _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()
|
|
|
- continue
|
|
|
- time.sleep(0.1)
|
|
|
+ _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()
|
|
|
+ return
|
|
|
+ # time.sleep(0.1)
|
|
|
|
|
|
def _play_complete_degree_check(self):
|
|
|
for k, v in list(self.call_players.items()):
|