From f938839f3f914da5822576091bec3511f0e7ae8c Mon Sep 17 00:00:00 2001 From: franck cuny Date: Mon, 28 Jun 2010 08:21:45 +0200 Subject: logger read from context; more net::presque --- lib/presque/worker/Role/Job.pm | 7 ++++++- lib/presque/worker/Role/Logger.pm | 37 ++++++++++++++++++++++++++--------- lib/presque/worker/Role/Management.pm | 17 ++++++++++++---- 3 files changed, 47 insertions(+), 14 deletions(-) (limited to 'lib/presque/worker/Role') diff --git a/lib/presque/worker/Role/Job.pm b/lib/presque/worker/Role/Job.pm index 6ce317c..3681580 100644 --- a/lib/presque/worker/Role/Job.pm +++ b/lib/presque/worker/Role/Job.pm @@ -9,7 +9,12 @@ sub _job_failure { push @{$job->{fail}}, $err; my $retries = ($job->{retries_left} || $self->job_retries) - 1; $job->{retries_left} = $retries; - $self->rest_retry_job($job) if $retries > 0; + try { + $self->retry_job(queue_name => '', $job) if $retries > 0; + } + catch { + # XXX + }; $self->fail($job, $_) if $self->_has_fail_method; } diff --git a/lib/presque/worker/Role/Logger.pm b/lib/presque/worker/Role/Logger.pm index 4285b55..c33ae51 100644 --- a/lib/presque/worker/Role/Logger.pm +++ b/lib/presque/worker/Role/Logger.pm @@ -9,18 +9,37 @@ has logger => ( isa => 'Object', lazy => 1, default => sub { - my $self = shift; - my $log = Log::Dispatch->new(); - $log->add( - Log::Dispatch::Screen->new( - name => 'screen', - min_level => 'debug', - newline => 1, - ) - ); + my $self = shift; + my $context = $self->context; + my $logger = Log::Dispatch->new(); + if (my $log_conf = $context->{logger}) { + foreach my $log_type (keys %{$log_conf}) { + my $log_engine = $self->_load_log_engine($log_type); + my $_logger = + $log_engine->new(%{$self->context->{log}->{$log_type}}); + $logger->add($_logger); + } + } + else { + $log->add( + Log::Dispatch::Screen->new( + name => 'screen', + min_level => 'debug', + newline => 1, + ) + ); + } + $log; } ); +sub _load_log_engine { + my ($self, $engine) = @_; + my $log_engine = "Log::Dispatch::" . ucfirst($engine); + Class::MOP::load_class($log_engine); + $log_engine; +} + before start => sub { my $self = shift; diff --git a/lib/presque/worker/Role/Management.pm b/lib/presque/worker/Role/Management.pm index cceea4e..c2a13fd 100644 --- a/lib/presque/worker/Role/Management.pm +++ b/lib/presque/worker/Role/Management.pm @@ -6,7 +6,7 @@ has shut_down => (is => 'rw', isa => 'Bool', default => 0,); before start => sub { my $self = shift; - $self->rest_register_worker; + $self->register_worker(worker_id => $self->worker_id); $SIG{INT} = sub { $self->_shutdown }; $SIG{TERM} = sub { $self->_shutdown }; $SIG{QUIT} = sub { $self->_graceful_shutdown }; @@ -14,9 +14,18 @@ before start => sub { $SIG{CHLD} = 'IGNORE'; }; -after start => sub { (shift)->rest_unregister_worker; }; -after _graceful_shutdown => sub { (shift)->rest_unregister_worker; }; -after _shutdown => sub { (shift)->rest_unregister_worker; }; +after start => sub { + my $self = shift; + $self->unregister_worker(worker_id => $self->worker_id); +}; +after _graceful_shutdown => sub { + my $self = shift; + $self->unregister_worker(worker_id => $self->worker_id); +}; +after _shutdown => sub { + my $self = shift; + $self->unregister_worker(worker_id => $self->worker_id); +}; sub _shutdown { my $self = shift; -- cgit 1.4.1