2 个版本
使用旧的 Rust 2015
0.1.1 | 2017 年 11 月 27 日 |
---|---|
0.1.0 | 2017 年 2 月 10 日 |
#27 在 #停止
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