Davidliu пре 3 месеци
родитељ
комит
4f520f5869
1 измењених фајлова са 11 додато и 6 уклоњено
  1. 11 6
      src/core/callcenter/agent.py

+ 11 - 6
src/core/callcenter/agent.py

@@ -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):