我正在使用一个equeue
通过将曲目推入播放列表来播放播放列表。假设一个小时后,一个新的播放列表(一组文件)被推送到队列中。不幸的是,这些曲目没有开始播放,因为它们在先前排队的文件之后排队。
以下脚本从队列中删除文件:
input_fs = request.equeue(id="fs")
def clear_items(s) =
ret = server.execute("fs.primary_queue")
ret = list.hd(ret)
if ret == "" then
log("Queue cleared.")
(-1.)
else
log("There are still items in the queue, trying skip ...")
source.skip(s)
(0.1)
end
end
def clear_queue(s) =
add_timeout(fast=false, 0.5, {clear_items(s)})
end
server.register(namespace="fs",
description="Clear the all items of the filesystem queue.",
usage="clear",
"clear",
fun (s) -> begin clear_queue(input_fs) "Done." end)
它在通过 Telnet 调用时工作,但也会增加一些额外的超时。结果,对下一个播放列表的调度有所延迟。
请注意,我正在通过 Python 应用程序执行 LiquidSoap 调度,该应用程序使用定时线程推送到队列。
你会说什么是解决这个问题的推荐方法?