是否存在允许任务依赖于其他任务的作业队列系统


Is there a job queue system that allows tasks to be dependent on other tasks?

例如,我正在开发一个部署应用程序。假设我们从SVN部署了4个分支,这需要从subversion部署4个svn export。这可能需要一段时间,具体取决于我们签出的分支,所以我正在考虑将此发送到作业队列。当所有作业都完成后,我们才需要重新启动应用程序服务。

是否存在可以执行此操作的作业队列?我想我见过的最接近的是芹菜,因为它把结果输入数据库。

如果您使用的是linux,您可以使用像Cron这样的东西在某个时间点自动/调度作业的开始(例如每天1次),并将该作业的输出管道到PHP脚本,该脚本可以将作业完成的时间存储在数据库中。您可以有第二个"监视"PHP脚本,该脚本将更频繁地运行(例如每半小时运行一次),它将查询数据库,以查看是否所有作业都已完成。如果该日期的所有作业都标记为"完成",则可以使用该PHP脚本开始重新启动。你不一定要用PHP写,我相信它可以用Perl写,或者用shell脚本写,这只是一个例子,因为你的标签里有PHP。