第十一天 - 谁在看着 Minions

现在我有一个 Minion 工作队列,我需要妥善处理它。工人是否在工作(他们是否抓住了生产资料)?工作是否顺利完成?有什么错误吗?这些是什么?

Minion Jobs Command

Minion 带有一个 job 命令,列出了作业及其状态。

1
2
3
4
5
6
7
$ perl myapp.pl minion job
6 inactive default check_url
5 active default check_url
4 failed default check_url
3 failed default check_url
2 finished default check_url
1 finished default check_url

我可以通过传递工作的ID来查看单个工作的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ perl minion.pl minion job 1
{
"args" => [
"http://mojolicious.org"
],
"attempts" => 1,
"children" => [],
"created" => "2018-11-23T19:15:47Z",
"delayed" => "2018-11-23T19:15:47Z",
"finished" => "2018-11-23T19:15:48Z",
"id" => 1,
"notes" => {},
"parents" => [],
"priority" => 0,
"queue" => "default",
"result" => "0.0716841220855713",
"retried" => undef,
"retries" => 0,
"started" => "2018-11-23T19:15:47Z",
"state" => "finished",
"task" => "check_url",
"worker" => 1
}

但是,如果我不必打开终端,打开SSH连接,并运行命令来查看我的Minion的状态,那就更好了。

Minion Admin UI

我说我没有网络应用程序,但我没有。但是,如果我想要一个简单的Web应用程序来检查 Minion worker 的状态并阅读作业结果,那么 Minion 会附带一个 Admin UI 插件

我可以像添加 Minion 插件一样添加 Minion::Admin 插件

1
2
3
4
5
6
7
8
9
use Mojolicious::Lite;
plugin Minion => {
SQLite => 'sqlite:' . app->home->child('minion.db'),
};
plugin 'Minion::Admin', {
# Host Admin UI at /
route => app->routes->any('/'),
};
app->start;

一旦我添加插件,我现在有一个Web应用程序,我可以使用 Mojolicious daemon 命令运行

1
2
$ perl myapp.pl daemon
Server available at http://127.0.0.1:3000

现在我可以访问 Minion UI:

img

主页面显示当前状态。顶部的链接显示给定状态下的作业列表,存在的任何锁定以及工作者。

img

查看作业列表时,我可以单击左上角的按钮来管理作业队列,或单击每个作业行右侧的插入符号以查看该作业的详细信息(与作业命令显示的相同) 。

img

Minion Admin UI 是一款出色的工具!查看 Minion 应用程序的完整源代码