Problem
Separator.join(timeout) blocks forever regardless of the timeout argument; the parameter is dead.
Cite
spleeter/separator.py:127-138:
def join(self, timeout: int = 200) -> None:
while len(self._tasks) > 0:
task = self._tasks.pop()
task.get()
task.wait(timeout=timeout)
task is a multiprocessing.pool.AsyncResult. task.get() (with no timeout arg) blocks indefinitely per stdlib. By the time task.wait(timeout=timeout) runs, the task is already complete, so the timeout has no effect. Users calling separator.join(timeout=5) still hang if any subprocess stalls.
Expected
timeout bounds the wait per task.
Actual
Parameter ignored; unbounded block.
Fix
task.get(timeout=timeout) (drop the task.wait line).
Environment
spleeter 2.4.2 (pyproject.toml), Python >=3.8,<3.12, stdlib multiprocessing.pool.AsyncResult (all supported CPython versions).
Thanks for maintaining deezer/spleeter!
Problem
Separator.join(timeout)blocks forever regardless of thetimeoutargument; the parameter is dead.Cite
spleeter/separator.py:127-138:taskis amultiprocessing.pool.AsyncResult.task.get()(with notimeoutarg) blocks indefinitely per stdlib. By the timetask.wait(timeout=timeout)runs, the task is already complete, so thetimeouthas no effect. Users callingseparator.join(timeout=5)still hang if any subprocess stalls.Expected
timeoutbounds the wait per task.Actual
Parameter ignored; unbounded block.
Fix
task.get(timeout=timeout)(drop thetask.waitline).Environment
spleeter 2.4.2 (
pyproject.toml), Python >=3.8,<3.12, stdlibmultiprocessing.pool.AsyncResult(all supported CPython versions).Thanks for maintaining deezer/spleeter!