2 个版本

使用旧的 Rust 2015

0.1.1 2017 年 11 月 27 日
0.1.0 2017 年 2 月 10 日

#27#停止

GPL-3.0 许可证

25KB
540

process-queue 🚋

process-queue 是一个用于使用不同参数集排队顺序程序执行的工具。它可以用于管理长时间运行的任务。

安装

cargo install --git 'https://bitbucket.org/Soft/process-queue.git'

用法

pqueue server [-h|--help] [-V|--version] [-n|--name NAME] [-c|--cd DIR] [-l|--log FILE] [-d|--daemon] [-r|--retries N] COMMAND TEMPLATE...

使用 COMMAND 参数通过 TEMPLATE 定义的参数启动一个服务器来运行 COMMAND 实例。

pqueue send [-h|--help] [-V|--version] [-n|--name NAME] ARGS...

将任务发送到服务器。服务器的参数模板中的占位符将用 ARGS 中的参数填充。

pqueue stop [-h|--help] [-V|--version] [-n|--name NAME]

停止服务器。如果服务器正在执行任务,则将在当前任务完成后停止。

pqueue has [-h|--help] [-V|--version] [-n|--name NAME]

检查服务器是否存在。如果服务器不存在,则返回非零退出码。

模板

当启动 pqueue 服务器时,可以指定程序参数模板。模板是一组程序参数和一个或多个“占位符”,可以由发送者填充。在参数模板中,{} 指定一个占位符。占位符将由 send 子命令指定的参数替换。

示例

可以使用 server 子命令启动 pqueue 服务器。在这个示例中,我们启动了一个 pqueue 服务器,该服务器将执行带有两个参数“Hello”和一个由发送者提供的参数的 echo

pqueue server echo Hello {}

一旦服务器开始监听,我们就可以开始发送任务。例如,让我们通过运行以下命令向世界问好:

pqueue send world

我们可以看到字符串“Hello world”被打印在服务器运行的终端中。服务器将继续监听新任务,如果我们现在执行

pqueue send "John Doe"

我们预计会看到打印出“Hello John Doe”。

在处理长时间运行的任务时,pqueue 非常有用。由于任务被排队,因此可以在服务器仍在执行早期程序的情况下发送新任务。所有任务都存储在队列中,并按先到先得的顺序顺序执行。

为了演示这一点,我们可以启动一个新的名为“timers”的服务器

pqueue server -n timers sleep {}

之后,我们可以发送一系列任务

pqueue send -n timers 10
pqueue send -n timers 4
pqueue send -n timers 20

任务将依次执行,即使旧的任务未完成,也可以添加新任务。

可以使用pqueue stop命令停止服务器。如果服务器在处理任务时收到停止请求,它将首先等待当前任务完成后再停止。当收到停止请求时,任何排队中的任务都将被丢弃。

依赖项

process-queue使用DBus进行IPC,需要1.6或更高版本的libdbus

依赖项

~13MB
~261K SLoC