mirror of
https://github.com/Comfy-Org/ComfyUI-Manager.git
synced 2025-12-16 18:02:58 +08:00
[fix] Restore proper thread-based TaskQueue worker management
- Fix async/sync mismatch in TaskQueue worker implementation - Use threading.Thread with asyncio.run() as originally designed - Remove incorrect async task approach that caused blocking issues - TaskQueue now properly manages its own thread lifecycle - Resolves WebSocket message delivery and task processing issues
This commit is contained in:
parent
7a73f5db73
commit
b089db79c5
@ -216,25 +216,17 @@ class TaskQueue:
|
||||
"""Check if the queue is currently processing tasks"""
|
||||
return (
|
||||
self._worker_task is not None
|
||||
and not self._worker_task.done()
|
||||
and (len(self.running_tasks) > 0 or len(self.pending_tasks) > 0)
|
||||
and self._worker_task.is_alive()
|
||||
)
|
||||
|
||||
async def start_worker(self) -> bool:
|
||||
def start_worker(self) -> bool:
|
||||
"""Start the task worker if not already running. Returns True if started, False if already running."""
|
||||
if self._worker_task is not None and not self._worker_task.done():
|
||||
if self._worker_task is not None and self._worker_task.is_alive():
|
||||
return False # Already running
|
||||
|
||||
self._worker_task = asyncio.create_task(self._worker())
|
||||
self._worker_task = threading.Thread(target=lambda: asyncio.run(task_worker()))
|
||||
self._worker_task.start()
|
||||
return True
|
||||
|
||||
async def _worker(self):
|
||||
"""Internal worker that processes the task queue"""
|
||||
try:
|
||||
await task_worker()
|
||||
finally:
|
||||
# Clean up worker reference when done
|
||||
self._worker_task = None
|
||||
|
||||
def get_current_state(self) -> TaskStateMessage:
|
||||
return TaskStateMessage(
|
||||
@ -1435,7 +1427,7 @@ async def queue_count(request):
|
||||
@routes.get("/v2/manager/queue/start")
|
||||
async def queue_start(request):
|
||||
# finalize_temp_queue_batch()
|
||||
started = await task_queue.start_worker()
|
||||
started = task_queue.start_worker()
|
||||
|
||||
if started:
|
||||
return web.Response(status=200) # Started successfully
|
||||
|
||||
Loading…
Reference in New Issue
Block a user