From c6ba7bde1fd391ffa59a76b37d3560d8355af131 Mon Sep 17 00:00:00 2001 From: Reid 'arrdem' McKenzie Date: Sat, 8 Jul 2023 19:55:54 -0600 Subject: [PATCH] Cleanup: Rely on top-level exception handling --- .../tentacles/src/python/tentacles/workers.py | 85 ++++++++----------- 1 file changed, 37 insertions(+), 48 deletions(-) diff --git a/projects/tentacles/src/python/tentacles/workers.py b/projects/tentacles/src/python/tentacles/workers.py index b84f9d1..5990575 100644 --- a/projects/tentacles/src/python/tentacles/workers.py +++ b/projects/tentacles/src/python/tentacles/workers.py @@ -80,7 +80,7 @@ def poll_printers(app: App, db: Db) -> None: ): return True # Assume the bed is ready - status = client._post( + status: dict = client._post( "/api/plugin/bedready", json={ "command": "check_bed", @@ -225,25 +225,18 @@ def revoke_jobs(app: App, db: Db) -> None: if job.printer_id: printer = db.fetch_printer(pid=job.printer_id) + log.info(f"Cancelling running job {job.id}") + client = get_client(printer.url, printer.api_key) try: - log.info(f"Cancelling running job {job.id}") - client = get_client(printer.url, printer.api_key) - try: - client.cancel() - except HTTPError as e: - if e.response.status_code == 409: - pass - else: - raise + client.cancel() + except HTTPError as e: + if e.response.status_code == 409: + pass + else: + raise - log.info(f"Job {job.id} -> cancelled") - db.finish_job(jid=job.id, state="cancelled") - - except TimeoutError: - pass - - except Exception: - log.exception("Oop") + log.info(f"Job {job.id} -> cancelled") + db.finish_job(jid=job.id, state="cancelled") else: log.info(f"Unmapped job {job.id} became cancelled") @@ -255,40 +248,33 @@ def pull_jobs(app: App, db: Db) -> None: for job in db.list_running_jobs(): printer = db.fetch_printer(pid=job.printer_id) + client = get_client(printer.url, printer.api_key) + job_state = client.job_info() try: - client = get_client(printer.url, printer.api_key) - job_state = client.job_info() - try: - printer_state = client.printer().get("state").get("flags", {}) - except HTTPError: - printer_state = {"disconnected": True, "error": True} + printer_state = client.printer().get("state").get("flags", {}) + except HTTPError: + printer_state = {"disconnected": True, "error": True} - if job_state.get("progress", {}).get("completion", 0.0) == 100.0: - log.info(f"Job {job.id} has succeeded") - db.finish_job(jid=job.id, state="success") + if job_state.get("progress", {}).get("completion", 0.0) == 100.0: + log.info(f"Job {job.id} has succeeded") + db.finish_job(jid=job.id, state="success") - elif printer_state.get("error"): - log.warn(f"Job {job.id} has failed") - db.finish_job(jid=job.id, state="failed") + elif printer_state.get("error"): + log.warn(f"Job {job.id} has failed") + db.finish_job(jid=job.id, state="failed") - elif printer_state.get("cancelling"): - log.info(f"Job {job.id} has been acknowledged as cancelled") - db.finish_job(jid=job.id, state="cancelled") + elif printer_state.get("cancelling"): + log.info(f"Job {job.id} has been acknowledged as cancelled") + db.finish_job(jid=job.id, state="cancelled") - elif printer_state.get("printing"): - db.start_job(jid=job.id) + elif printer_state.get("printing"): + db.start_job(jid=job.id) - else: - log.warn( - f"Job {job.id} is in a weird state; assuming error\n{pformat(job_state.get('progress'))}\n{pformat(printer_state)}" - ) - db.finish_job(jid=job.id, state="failed") - - except TimeoutError: - pass - - except Exception: - log.exception("Oop") + else: + log.warn( + f"Job {job.id} is in a weird state; assuming error\n{pformat(job_state.get('progress'))}\n{pformat(printer_state)}" + ) + db.finish_job(jid=job.id, state="failed") def send_emails(app, db: Db): @@ -395,5 +381,8 @@ class Worker(Monitor): ) def callback(self): - with closing(self._db_factory(self._app)) as db: - self._callback(self._app, db) + try: + with closing(self._db_factory(self._app)) as db: + self._callback(self._app, db) + except: + log.exception("Worker tick failed; exception swallowed")