Wait the light to fall

第十一天 - 谁在看着 Minions

焉知非鱼

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

Minion Jobs Command #

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

$ 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来查看单个工作的信息。

$ 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 插件

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 命令运行

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

现在我可以访问 Minion UI:

img

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

img

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

img

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