From c74144140dab28c12fa3209c0dbbc712cdd10089 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 17 Jul 2022 13:33:22 +0530 Subject: [PATCH] Dont rely on global things in __del__ --- src/calibre/scraper/simple.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/calibre/scraper/simple.py b/src/calibre/scraper/simple.py index d00d598b4c..8dacc20fa5 100644 --- a/src/calibre/scraper/simple.py +++ b/src/calibre/scraper/simple.py @@ -7,7 +7,6 @@ import json import os import sys import weakref -from contextlib import suppress from qt.core import QLoggingCategory, QUrl from threading import Lock, Thread, get_ident @@ -53,11 +52,6 @@ qt.webenginecontext.info=false overseers = [] -def safe_wait(w, timeout): - with suppress(Exception): - return w.wait(timeout) - - class Overseer: def __init__(self): @@ -65,6 +59,12 @@ class Overseer: self.workers = {} overseers.append(weakref.ref(self)) + def safe_wait(self, w, timeout): + try: + return w.wait(timeout) + except Exception: + pass + def worker_for_source(self, source): wname = f'{source}::{get_ident()}' with self.lock: @@ -96,10 +96,10 @@ class Overseer: w.stdin.write(b'EXIT:0\n') w.stdin.flush() for w in self.workers.values(): - if safe_wait(w, 0.2) is None: + if self.safe_wait(w, 0.2) is None: w.terminate() if not iswindows: - if safe_wait(w, 0.1) is None: + if self.safe_wait(w, 0.1) is None: w.kill() self.workers.clear() close = __del__