Mojolicious - работник миньонов не запускается автоматически

Я использую Mojolicious полное приложение и загружаю Minion (бэкэнд sqlite). Мой вопрос заключается в том, почему работник миньонов не запускается сам по себе, когда я запускаю приложение для веселья с помощью гипнотической загрузки. Согласно документации Minion, он должен:

Фоновые рабочие процессы обычно запускаются командой Minion:: Command:: minion:: worker, которая становится автоматически доступной, когда приложение загружает Mojolicious::Plugin::Minion.

Среда:

  • Red Hat Enterprise Linux Server - 7.5 (Maipo)
  • Perl v5.16.3
  • Mojolicious 8.0 (Суперзлодей)
  • Миньон 9.01

Mojolicious полное приложение

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

Спасибо.

2 ответа

Как упоминали Корион и Гриннц в комментариях:

Работники Minion - это отдельные несвязанные процессы, которые вы должны запускать и управлять самостоятельно.

Хорошие новости:

Команда Mojolicious открыла этот выпуск. Скоро будет решено: разрешить запуск приложения Minion на сервере приложений

С использованием Mojo::IOLoop::Subprocessвы можете запустить подпроцесс в приложении следующим образом:

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

Документация здесь

Это означает, что вы можете использовать before_server_startхук для запуска рабочих подпроцессов через app->minion->worker->run

Однако после того, как они начались, кажется, AFAIK, нет простого способа остановить их, когда само приложение останавливается, поэтому вам нужно проверить их и пожинать плоды - вот где Proc::ProcessTable может помочь.

Я собрал все это вместе в быстром и грязном плагине здесь .

Другие вопросы по тегам