Fetch preview images on separate thread

This commit is contained in:
Brett Williams
2023-06-03 17:21:30 -05:00
parent 2154cf0cff
commit c88480daea

View File

@@ -14,7 +14,7 @@ from lib.server.server_proxy import RenderServerProxy
sys.path.append("../") sys.path.append("../")
from lib.server.zeroconf_server import ZeroconfServer from lib.server.zeroconf_server import ZeroconfServer
logger = logging.getLogger()
def sort_column(tree, col, reverse=False): def sort_column(tree, col, reverse=False):
@@ -32,8 +32,8 @@ def make_sortable(tree):
class DashboardWindow: class DashboardWindow:
lib_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) lib_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
image_path = os.path.join(lib_path, 'server', 'static', 'images', 'desktop.png') image_path = os.path.join(lib_path, 'server', 'static', 'images')
default_image = Image.open(image_path) default_image = Image.open(os.path.join(image_path, 'desktop.png'))
def __init__(self): def __init__(self):
@@ -183,15 +183,22 @@ class DashboardWindow:
job_id = self.selected_job_id() job_id = self.selected_job_id()
if job_id: if job_id:
# update thumb # update thumb
response = self.server_proxy.request(f'job/{job_id}/thumbnail?size=big') def fetch_preview():
if response.ok: hostname = self.server_proxy.hostname
try: response = self.server_proxy.request(f'job/{job_id}/thumbnail?size=big')
import io if response.ok:
image_data = response.content try:
image = Image.open(io.BytesIO(image_data)) import io
self.set_image(image) image_data = response.content
except Exception as e: image = Image.open(io.BytesIO(image_data))
print(f"error getting image: {e}") if self.server_proxy.hostname == hostname:
self.set_image(image)
except Exception as e:
logger.error(f"error fetching image: {e}")
fetch_thread = threading.Thread(target=fetch_preview)
fetch_thread.daemon = True
fetch_thread.start()
else: else:
self.set_image(self.default_image) self.set_image(self.default_image)