Пример #1
0
    async def handle_client_get_queue(self, client_addr, _: ClientGetQueue):
        """ Handles a ClientGetQueue message. Send back info about the job queue"""
        #jobs_running: a list of tuples in the form
        #(job_id, is_current_client_job, agent_name, info, launcher, started_at, max_time)
        jobs_running = list()

        for job_id, content in self._job_running.items():
            agent_friendly_name = self._registered_agents[
                content.agent_addr].name
            jobs_running.append(
                (content.msg.job_id, content.client_addr == client_addr,
                 agent_friendly_name,
                 content.msg.course_id + "/" + content.msg.task_id,
                 content.msg.launcher, int(content.time_started),
                 self._get_time_limit_estimate(content.msg)))

        #jobs_waiting: a list of tuples in the form
        #(job_id, is_current_client_job, info, launcher, max_time)
        jobs_waiting = list()

        for job in self._waiting_jobs.values():
            if isinstance(job.msg, ClientNewJob):
                jobs_waiting.append(
                    (job.job_id, job.client_addr == client_addr,
                     job.msg.course_id + "/" + job.msg.task_id,
                     job.msg.launcher, self._get_time_limit_estimate(job.msg)))

        await ZMQUtils.send_with_addr(
            self._client_socket, client_addr,
            BackendGetQueue(jobs_running, jobs_waiting))
Пример #2
0
    async def handle_client_get_queue(self, client_addr, _: ClientGetQueue):
        """ Handles a ClientGetQueue message. Send back info about the job queue"""
        #jobs_running: a list of tuples in the form
        #(job_id, is_current_client_job, agent_name, info, launcher, started_at, max_end)
        jobs_running = list()

        for backend_job_id, content in self._job_running.items():
            jobs_running.append(
                (content[1].job_id, backend_job_id[0] == client_addr,
                 self._registered_agents[content[0]], content[1].course_id +
                 "/" + content[1].task_id, content[1].launcher,
                 int(content[2]), int(content[2]) + content[1].time_limit))

        #jobs_waiting: a list of tuples in the form
        #(job_id, is_current_client_job, info, launcher, max_time)
        jobs_waiting = list()

        for job_client_addr, job in self._waiting_jobs.items():
            msg = job[-1]
            if isinstance(msg, ClientNewJob):
                jobs_waiting.append(
                    (msg.job_id, job_client_addr[0] == client_addr,
                     msg.course_id + "/" + msg.task_id, msg.launcher,
                     msg.time_limit))

        await ZMQUtils.send_with_addr(
            self._client_socket, client_addr,
            BackendGetQueue(jobs_running, jobs_waiting))