job_queue: register remote method to control the queue
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
parent
e9b3d8e7ae
commit
4837ea56cb
|
@ -52,6 +52,10 @@ class JobQueue:
|
||||||
self.server.register_event_handler(
|
self.server.register_event_handler(
|
||||||
"job_state:cancelled", self._on_job_abort)
|
"job_state:cancelled", self._on_job_abort)
|
||||||
|
|
||||||
|
self.server.register_remote_method("pause_job_queue", self.pause_queue)
|
||||||
|
self.server.register_remote_method("resume_job_queue",
|
||||||
|
self.resume_queue)
|
||||||
|
|
||||||
self.server.register_endpoint(
|
self.server.register_endpoint(
|
||||||
"/server/job_queue/job", ['POST', 'DELETE'],
|
"/server/job_queue/job", ['POST', 'DELETE'],
|
||||||
self._handle_job_request)
|
self._handle_job_request)
|
||||||
|
@ -168,6 +172,17 @@ class JobQueue:
|
||||||
await self.lock.acquire()
|
await self.lock.acquire()
|
||||||
self.lock.release()
|
self.lock.release()
|
||||||
|
|
||||||
|
async def resume_queue(self) -> None:
|
||||||
|
async with self.lock:
|
||||||
|
if self.queue_state != "loading":
|
||||||
|
if self.queued_jobs and await self._check_can_print():
|
||||||
|
self.queue_state = "loading"
|
||||||
|
event_loop = self.server.get_event_loop()
|
||||||
|
self.pop_queue_handle = event_loop.delay_callback(
|
||||||
|
0.01, self._pop_job)
|
||||||
|
else:
|
||||||
|
self.queue_state = "ready"
|
||||||
|
|
||||||
def _job_map_to_list(self) -> List[Dict[str, Any]]:
|
def _job_map_to_list(self) -> List[Dict[str, Any]]:
|
||||||
cur_time = time.time()
|
cur_time = time.time()
|
||||||
return [job.as_dict(cur_time) for
|
return [job.as_dict(cur_time) for
|
||||||
|
@ -223,15 +238,7 @@ class JobQueue:
|
||||||
async def _handle_resume_queue(self,
|
async def _handle_resume_queue(self,
|
||||||
web_request: WebRequest
|
web_request: WebRequest
|
||||||
) -> Dict[str, Any]:
|
) -> Dict[str, Any]:
|
||||||
async with self.lock:
|
await self.resume_queue()
|
||||||
if self.queue_state != "loading":
|
|
||||||
if self.queued_jobs and await self._check_can_print():
|
|
||||||
self.queue_state = "loading"
|
|
||||||
event_loop = self.server.get_event_loop()
|
|
||||||
self.pop_queue_handle = event_loop.delay_callback(
|
|
||||||
0.01, self._pop_job)
|
|
||||||
else:
|
|
||||||
self.queue_state = "ready"
|
|
||||||
return {
|
return {
|
||||||
'queued_jobs': self._job_map_to_list(),
|
'queued_jobs': self._job_map_to_list(),
|
||||||
'queue_state': self.queue_state
|
'queue_state': self.queue_state
|
||||||
|
|
Loading…
Reference in New Issue