diff options
| author | franck cuny <franck@lumberjaph.net> | 2010-05-15 14:28:42 +0200 |
|---|---|---|
| committer | franck cuny <franck@lumberjaph.net> | 2010-05-15 14:28:42 +0200 |
| commit | de8d333b8806b4a1ea0a997f6a916d127eadae4b (patch) | |
| tree | f3d3c0edba570fb937c9390ad19dfb489f05a210 /lib/presque/worker/Role/Management.pm | |
| parent | fetch job from queue, handle job, handle failure, ... (diff) | |
| download | presque-worker-de8d333b8806b4a1ea0a997f6a916d127eadae4b.tar.gz | |
a simple worker; a role for the REST interface to presque; reg signals
to shutdown workers; log before starting a task; fork dispatcher (a la resque)
Diffstat (limited to 'lib/presque/worker/Role/Management.pm')
| -rw-r--r-- | lib/presque/worker/Role/Management.pm | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/lib/presque/worker/Role/Management.pm b/lib/presque/worker/Role/Management.pm index 2bd4db3..cdfcd6d 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->rest_register_worker; }; after start => sub { @@ -14,6 +14,41 @@ after start => sub { $self->rest_unregister_worker; }; -# XXX reg signal +before start => sub { + my $self = shift; + $SIG{'INT'} = sub { $self->_shutdown }; + $SIG{'TERM'} = sub { $self->_shutdown }; + $SIG{'QUIT'} = sub { $self->_graceful_shutdown }; + $SIG{'USR1'} = sub { $self->_kill_child }; +}; + +sub _shutdown { + my $self = shift; + $self->logger->log( + level => 'info', + message => 'worker ' . $self->worker_id . ' shuting down' + ); + $self->shut_down(1); + $self->_kill_child(); +} + +sub _graceful_shutdown { + my $self = shift; + $self->logger->log( + level => 'info', + message => 'worker ' . $self->worker_id . ' kill child' + ); + $self->shut_down(1); + $self->_kill_child(); +} + +sub _kill_child { + my $self = shift; + $self->logger->log( + level => 'info', + message => 'worker ' . $self->worker_id . ' shuting down gracefuly' + ); +} 1; + |
