有没有这样一种任务队列系统,自己独立运行,配置一下就可以执行有先后顺序的任务,同级任务可以并行执行

2021-08-25 13:34:04 +08:00
 wudicgi
以“下载收藏夹中的所有视频”为例,会有这样几个任务:
1. 获取收藏夹的列表
2. 获取收藏夹中视频的列表
3. 下载视频
4. 对下载得到的文件进行处理 (合并分段视频等)
5. 将视频移动到指定位置,并将信息添加到数据库中

1, 2, 3, 4, 5 按顺序执行,同时期望 1, 2 同一时间最多运行一个任务,3 可以同时运行多个,4, 5 在每个 3 完成后依次运行
每个任务通过调用程序完成就行,这些程序自己写

像这种任务队列的需求有没有什么现成的程序可以用?感觉应该有,但这方面了解的少,不知道用什么关键词搜
1075 次点击
所在节点    问与答
8 条回复
wudicgi
2021-08-25 13:41:58 +08:00
这样的工作我以前都是用 PHP 直接写的,每个任务搞个 php 脚本
纯手动操作,执行完一级的任务,再执行下一级,有没有错误全靠人工判断

如果有一个通用的任务队列框架可用,可以把数据的输出输出和错误处理都标准化
而且像下载文件调用 youtube-dl 这种操作,在 PHP 里调用外部程序感觉可控的东西少,有异常时处理不方便
ss098
2021-08-25 14:08:15 +08:00
混合使用 Chain 与 Batch 。

https://laravel.com/docs/8.x/queues
wudicgi
2021-08-25 14:47:06 +08:00
@ss098 感谢, 看了下 laravel 的 queues, 应该可以实现这种功能,但它貌似是在 PHP 程序内部用的

现在我理想中的程序是跑外部程序的,每个任务启动起来就是一个进程,
有一个 Web 页面或客户端程序可以看这些进程的运行状态,加上简单的控制,
不知道有没有人做过这种程序,就怕自己写完发现早有了
aborigine
2021-08-25 15:03:27 +08:00
airflow 可以用,哈哈哈哈
ruiyi1994
2021-08-25 15:12:28 +08:00
lithiumii
2021-08-25 15:24:20 +08:00
rq
triptipstop
2021-08-25 16:13:22 +08:00
XXLJOB
wudicgi
2021-08-25 18:25:08 +08:00
@aborigine 看了下 airflow 应该是相当接近这个需求了,就是貌似对 Windows 平台不太友好
有时间时试用一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/797909

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX