Mojolicious - 工作节点工作线程不会自动启动



我正在使用Mojolicus完整应用程序并加载Minion(后端sqlite(。我的问题是,当我用hypnodad启动mojolicus应用程序时,为什么小跟班不会自己启动。根据文件Minion它应该:

后台工作进程通常使用以下命令启动Minion::Command::Minion::worker,自动可用当一个应用程序加载Mojoliques::Plugin::Minion时。

环境:

  • Red Hat Enterprise Linux Server-7.5(Maipo(
  • Perl v5.16.3
  • Mojolicus 8.0(超级反派(
  • Minion 9.01

Mojolicus完整应用程序

package Apps;
use Moo;
extends 'Mojolicious';
sub startup {
my $self = shift;
$self->plugin(Config => file => '/var/www/apps/lib/appconf.perl');
$self->plugin(Minion => {SQLite => 'sqlite:/var/www/apps/db/minion_backend_sqlite.db'});
...
}

这就是我启动服务器的方式:

/usr/local/bin/hypnotoad /var/www/apps/script/apps

目前,我在后台启动仆从工作者(它也会在一段时间后被杀死,星天使(,如下所示:

/var/www/apps/script/apps minion worker -m production

谢谢。

如Corion和Grinz在评论中所述:

Minion工作进程是独立的、不相关的进程,您必须启动自己管理。

好消息:

Mojolicus团队已经公开了这个问题。将很快解决:允许应用服务器启动Minion工作程序

使用Mojo::IOLoop::Subprocess,您可以在应用程序中启动子流程,如下所示:

my $subprocess = Mojo::IOLoop::Subprocess->new;
$subprocess->run(sub {...}, sub{...})

此处的文档

这意味着您可以使用before_server_start挂钩通过app->minion->worker->run启动worker子流程

一旦它们启动,当应用程序本身停止时,AFAIK似乎没有简单的方法来阻止它们,所以你必须检查它们并收获它们——这就是Proc::ProcessTable可以提供帮助的地方。

我在这里把所有这些放在一个快速而肮脏的插件中。

相关内容

  • 没有找到相关文章

最新更新