Snippets

Brian Medley 69aEg: Untitled snippet

Created by Brian Medley

File work.pl Added

  • Ignore whitespace
  • Hide word diff
+use Mojolicious::Lite;
+use 5.20.0;
+use experimental 'signatures';
+
+use Mojo::Util qw(steady_time);
+
+plugin Minion => {Pg => "postgresql://$ENV{DBI_USER}:$ENV{DBI_PASS}\@127.0.0.1/jobs"};
+
+app->minion->add_task(email_photo => sub ($job, $photo) {
+    $job->app->log->debug(qq{Received message $photo : } . steady_time);
+    select(undef, undef, undef, rand);
+    $job->app->log->debug(qq{Processd message $photo : } . steady_time);
+});
+
+app->minion->add_task(convert_photo => sub ($job, $photo) {
+    $job->app->log->debug(qq{Received message $photo : } . steady_time);
+    select(undef, undef, undef, rand);
+    $job->app->log->debug(qq{Processd message $photo : } . steady_time);
+});
+
+app->minion->add_task(resize_photo => sub ($job, $photo) {
+    $job->app->log->debug(qq{Received message $photo : } . steady_time);
+    select(undef, undef, undef, rand);
+    $job->app->log->debug(qq{Processd message $photo : } . steady_time);
+});
+
+app->minion->add_task(crop_photo => sub ($job, $photo) {
+    $job->app->log->debug(qq{Received message $photo : } . steady_time);
+    select(undef, undef, undef, rand);
+    $job->app->log->debug(qq{Processd message $photo : } . steady_time);
+});
+
+app->minion->add_task(independent => sub ($job, $time) {
+    $job->app->log->debug(qq{Received message $time : } . steady_time);
+    select(undef, undef, undef, rand);
+    $job->app->log->debug(qq{Processd message $time : } . steady_time);
+});
+
+get '/' => sub {
+    my $c = shift;
+
+    $c->render(json => {number => 4});
+};
+
+get '/photo' => sub ($c) {
+    my $time = steady_time;
+
+    my @chain = (
+        [ convert_photo => "yippie.png: $time", [] ],
+        [ resize_photo => "yippie.png: $time", [] ],
+        [ crop_photo => "yippie.png: $time", [] ],
+        [ email_photo => "yippie.png: $time", [] ],
+    );
+
+    foreach my $chain (@chain) {
+        state $deps = [];
+
+        my $task = shift(@{ $chain });
+        my $ops = pop(@{ $chain });
+
+        push(@{ $deps }, $c->minion->enqueue($task, $chain, {@{$ops}, depends_on => $deps}));
+
+        $c->minion->enqueue("independent", [$time], {priority => 3}) if int(rand(2));
+    }
+
+    $c->minion->enqueue("independent", [$time]);
+    
+    $c->render(text => 'Your photo will be done soon.');
+};
+
+app->start;
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.