def get_agent(cls, v): if v in cls.visitor_agent: return cls.visitor_agent[v] else: if len(cls.idle_agents) > 0: agent_id = cls.idle_agents.pop() cls.reused_agents.add(agent_id) vv = cls.agent_visitor[agent_id] del cls.visitor_agent[vv] del cls.agent_visitor[agent_id] del cls.agent_status[agent_id] else: cls.agent_count += 1 cls.agent_md5.update(bytes(cls.agent_count)) agent_id = cls.agent_md5.hexdigest() GCFEngine.spawn_agent(agent_id) cls.visitor_agent[v] = agent_id cls.agent_visitor[agent_id] = v cls.agent_status[agent_id] = time() return agent_id