summary refs log tree commit diff
path: root/lib/presque/worker/Role/Job.pm
blob: 313116b147bb279f051bbc65d2ab5acfc9bea745 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package presque::worker::Role::Job;

use Try::Tiny;
use Moose::Role;
has job_retries    => (is => 'rw', isa => 'Int', default  => 5);

sub _job_failure {
    my ($self, $job, $err) = @_;

    push @{$job->{fail}}, $err;
    my $retries = ($job->{retries_left} || $self->job_retries) - 1;
    $job->{retries_left} = $retries;
    try {
        $self->retry_job(queue_name => $self->queue_name, %$job) if $retries > 0;
    }
    catch {
        # XXX
    };
    $self->fail($job, $_) if $self->_has_fail_method;
}

1;