|
@@ -804,7 +804,7 @@ class AgentStateService:
|
|
self.app = app
|
|
self.app = app
|
|
self.logger = app.logger
|
|
self.logger = app.logger
|
|
self.redis_handler = RedisHandler()
|
|
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.state_service_id_data_map = defaultdict(dict)
|
|
self.executor = ThreadPoolExecutor(max_workers=10)
|
|
self.executor = ThreadPoolExecutor(max_workers=10)
|
|
self.data_handle_server = DataHandleServer(app)
|
|
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):
|
|
def assign_agent(self, saas_id, service_id, called=None, ivr_id=None, task_id=None, cbp=None):
|
|
choose_phone_num = ''
|
|
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
|
|
return choose_phone_num
|
|
|
|
|
|
def handle_assign_time(self, saas_id, service_id, choose_phone_num):
|
|
def handle_assign_time(self, saas_id, service_id, choose_phone_num):
|