From 2817080d4c9aca154cccdce8ee76c94d474d96a6 Mon Sep 17 00:00:00 2001 From: tcely Date: Mon, 16 Jun 2025 09:33:53 -0400 Subject: [PATCH 1/2] Support consumer threads --- tubesync/common/huey.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tubesync/common/huey.py b/tubesync/common/huey.py index 87963726..0dee931e 100644 --- a/tubesync/common/huey.py +++ b/tubesync/common/huey.py @@ -1,3 +1,4 @@ +import os from functools import wraps @@ -25,13 +26,21 @@ def h_q_tuple(q, /): ) -def sqlite_tasks(key, /, prefix=None): +def sqlite_tasks(key, /, prefix=None, thread=None, workers=None): name_fmt = 'huey_{}' - if prefix is None: - prefix = '' if prefix: name_fmt = f'huey_{prefix}_' + '{}' name = name_fmt.format(key) + thread = thread is True + try: + workers = int(workers) + except TypeError: + workers = 2 + finally: + if 0 >= workers: + workers = os.cpu_count() + elif 1 == workers: + thread = False return dict( huey_class='huey.SqliteHuey', name=name, @@ -46,8 +55,8 @@ def sqlite_tasks(key, /, prefix=None): strict_fifo=True, ), consumer=dict( - workers=1, - worker_type='process', + workers=workers if thread else 1, + worker_type='thread' if thread else 'process', max_delay=20.0, flush_locks=True, scheduler_interval=10, From 40489a2bf2202ab42a2017416ca9656541b0e4d5 Mon Sep 17 00:00:00 2001 From: tcely Date: Mon, 16 Jun 2025 10:03:40 -0400 Subject: [PATCH 2/2] Use 'thread' for most consumers --- tubesync/tubesync/settings.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tubesync/tubesync/settings.py b/tubesync/tubesync/settings.py index f5689dd1..dfa8148f 100644 --- a/tubesync/tubesync/settings.py +++ b/tubesync/tubesync/settings.py @@ -52,10 +52,10 @@ FORCE_SCRIPT_NAME = None DJANGO_HUEY = { 'default': 'network', 'queues': { - 'database': sqlite_tasks('database'), - 'filesystem': sqlite_tasks('filesystem'), - 'limited': sqlite_tasks('limited', prefix='net'), - 'network': sqlite_tasks('network'), + 'database': sqlite_tasks('database', thread=True), + 'filesystem': sqlite_tasks('filesystem', thread=True), + 'limited': sqlite_tasks('limited', prefix='net', workers=1), + 'network': sqlite_tasks('network', thread=True, workers=0), }, } for django_huey_queue in DJANGO_HUEY['queues'].values():