★★★ Доброго всем ★★★
¡ ¡ ¡ ALL GLORY TO GLORIA ! ! !
0.9095 (up to Minion version/10+child minor)
child minor
Mojolicious::Plugin::Minion::Workers - does extend base Mojolicious::Plugin::Minion on manage Minion workers.
# Mojolicious (define amount workers in config) $self->plugin('Minion::Workers' => {Pg => ..., workers=>2, manage=>1, }); # or pass to $app->minion->workers->manage(<number>) for run later $self->plugin('Minion::Workers' => {Pg => ...}); # Mojolicious::Lite (define amount workers in config) plugin 'Minion::Workers' => {Pg => ..., workers=>2}; # Add tasks to your application app->minion->add_task(something_slow => sub { my ($job, @args) = @_; ... }); # But you can define tasks in config as well $self->plugin('Minion::Workers' => {Pg => ..., tasks => { foo_task => sub { ... }, }, }); # Start manage with amount workers app->minion->workers->manage(4); # or get number from config app->minion->workers->manage(); # Start jobs from anywhere in your application
Mojolicious::Plugin::Minion::Workers is a Mojolicious plugin for the Minion job queue and has extending base Mojolicious::Plugin::Minion for enable workers managment.
Mojolicious::Plugin::Minion::Workers apply all config options of the base plugin Mojolicious::Plugin::Minion, and define following:
Amount of Minion workers need to start/restart. None defaults. This value can be overriden on $app->minion->workers->manage(...).
$app->minion->workers->manage(...)
..., workers => 4, ...
Start/restart Minion workers during plugin registration. Defaults to false. If this option is not set then you can start Minion workers by $app->minion->workers->manage() see below.
$app->minion->workers->manage()
..., manage => 1, ...
You can define Minion tasks in config.
..., tasks => {foo_task => sub { ... }, ...},
If config parameter backend name is a coderef then returned value (connection string or backend object) from callback will reassigned to backend name config option, i.e. $conf->{<backend name>} = $conf->{<backend name>}->($app);.
$conf->{<backend name>} = $conf->{<backend name>}->($app);
..., Pg => sub { my $app = shift; ... }, ...
Mojolicious::Plugin::Minion::Workers add attr workers to the $app->minion object. The $app->minion->workers object has following public methods.
$app->minion
$app->minion->workers
Start/restart Minion passed amount workers or get its from plugin config. None workers mean skip managment.
$app->minion->workers->manage(2);
Tested manual on standard shell commands (on Linux) with Minion::Backend::Pg:
$ perl script/app.pl daemon # one Minion worker will be starting $ perl script/app.pl prefork # your amount Minion workers will be starting $ morbo script/app.pl # when morbo restarts on watch changes one Minion worker will be restarting too $ hypnotoad script/app.pl # your amount Minion workers will be starting $ hypnotoad script/app.pl # on hot deploy Minion workers will be restarting too $ hypnotoad -s script/app.pl # Minion workers will stoping too
NOTE. For shell commands $ morbo script/app.pl and $ perl script/app.pl daemon amount Minion workers is one process always.
$ morbo script/app.pl
$ perl script/app.pl daemon
NOTE. In case with hypnotoad if you want $ kill -USR2 app_pid then Minion workers will not restarts, sorry. Always use hot deploy command $ hypnotoad script/app.pl .
$ kill -USR2 app_pid
$ hypnotoad script/app.pl
BIG NOTE. When Minion workers restarts (hypnotoad | morbo) then ALL exists Minion processes stopped and then running. So if you run many separate apps with one database backend then dont use this module or set separate backend databases as well.
NOTE. PSGI application did not tested.
NOTE. With Minion::Backend::SQLite Minion workers starting but jobs does not execute. An other backends even not tested.
Mojolicious::Plugin::Minion::Workers enable all helpers through base plugin Mojolicious::Plugin::Minion, thus you dont need apply base plugin (auto register).
Mojolicious::Plugin::Minion::Workers inherits all methods from Mojolicious::Plugin::Minion and override the following new ones.
$plugin->register(Mojolicious->new, <config hashref>);
Register plugin in Mojolicious application.
Mojolicious::Plugin::Minion, Minion, Mojolicious::Guides, https://mojolicious.org.
Михаил Че (Mikhail Che), <mche[-at-]cpan.org>
<mche[-at-]cpan.org>
Please report any bugs or feature requests at https://github.com/mche/Mojolicious-Plugin-Minion-Workers/issues. Pull requests also welcome.
Copyright 2019+ Mikhail Che.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Mojolicious::Plugin::Minion::Workers, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mojolicious::Plugin::Minion::Workers
CPAN shell
perl -MCPAN -e shell install Mojolicious::Plugin::Minion::Workers
For more information on module installation, please visit the detailed CPAN module installation guide.