Davidliu 3 bulan lalu
induk
melakukan
e36c62b3f6
1 mengubah file dengan 12 tambahan dan 7 penghapusan
  1. 12 7
      src/core/callcenter/agent.py

+ 12 - 7
src/core/callcenter/agent.py

@@ -804,7 +804,7 @@ class AgentStateService:
         self.app = app
         self.logger = app.logger
         self.redis_handler = RedisHandler()
-        self.assigned_recycle_millisecond = 30 * 1000
+        self.assigned_recycle_millisecond = 3 * 1000
         self.state_service_id_data_map = defaultdict(dict)
         self.executor = ThreadPoolExecutor(max_workers=10)
         self.data_handle_server = DataHandleServer(app)
@@ -865,12 +865,17 @@ class AgentStateService:
 
     def assign_agent(self, saas_id, service_id, called=None, ivr_id=None, task_id=None, cbp=None):
         choose_phone_num = ''
-        self.logger.info("assignAgent %s %s %s"% (saas_id, service_id, called))
-        idle_agents = self.idle_agents(saas_id, service_id)
-        if len(idle_agents) <= 0:
-            return choose_phone_num
-        choose_phone_num = self._choose_max_idle_time(idle_agents)
-        self.handle_assign_time(saas_id, service_id, choose_phone_num)
+        lock = threading.Lock()
+        try:
+            lock.acquire()
+            self.logger.info("assignAgent %s %s %s"% (saas_id, service_id, called))
+            idle_agents = self.idle_agents(saas_id, service_id)
+            if len(idle_agents) <= 0:
+                return choose_phone_num
+            choose_phone_num = self._choose_max_idle_time(idle_agents)
+            self.handle_assign_time(saas_id, service_id, choose_phone_num)
+        finally:
+            lock.release()
         return choose_phone_num
 
     def handle_assign_time(self, saas_id, service_id, choose_phone_num):