diff options
author | franck cuny <franck@lumberjaph.net> | 2010-05-09 15:39:40 +0200 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-05-09 15:39:40 +0200 |
commit | c7ecb2bbd450d693726fac4fae2bab3180d527da (patch) | |
tree | d5d2de5716db7ab5edddf7078c6a08e99fa8b713 /lib/presque/RestQueueHandler.pm | |
parent | use roles (diff) | |
download | presque-c7ecb2bbd450d693726fac4fae2bab3180d527da.tar.gz |
error, check if queue is open before sending job, some small tweak
Diffstat (limited to 'lib/presque/RestQueueHandler.pm')
-rw-r--r-- | lib/presque/RestQueueHandler.pm | 75 |
1 files changed, 43 insertions, 32 deletions
diff --git a/lib/presque/RestQueueHandler.pm b/lib/presque/RestQueueHandler.pm index 115b3e5..b34a377 100644 --- a/lib/presque/RestQueueHandler.pm +++ b/lib/presque/RestQueueHandler.pm @@ -11,49 +11,60 @@ __PACKAGE__->asynchronous(1); sub get { my ( $self, $queue_name ) = @_; - return $self->http_error_queue if ( !$queue_name ); + return $self->http_error_queue if !$queue_name; my $dkey = $self->_queue_delayed($queue_name); my $lkey = $self->_queue($queue_name); - $self->application->redis->zrangebyscore( - $dkey, 0, time, + $self->application->redis->get( + $self->_queue_stat($queue_name), sub { - my $value = shift; - if ( $value && scalar @$value ) { - my $k = shift @$value; - $self->application->redis->zrem( - $dkey, $k, - sub { - $self->application->redis->get( - $k, + my $status = shift; + + if ( defined $status && $status == 0 ) { + return $self->http_error_closed_queue(); + } + + $self->application->redis->zrangebyscore( + $dkey, 0, time, + sub { + my $value = shift; + if ( $value && scalar @$value ) { + my $k = shift @$value; + $self->application->redis->zrem( + $dkey, $k, sub { - $self->finish(shift); + $self->application->redis->get( + $k, + sub { + $self->finish(shift); + } + ); } ); } - ); - } - else { - $self->application->redis->lpop( - $lkey, - sub { - my $value = shift; - my $qpkey = $self->_queue_policy($queue_name); - if ($value) { - $self->application->redis->get( - $value, - sub { - $self->finish(shift); + else { + $self->application->redis->lpop( + $lkey, + sub { + my $value = shift; + my $qpkey = $self->_queue_policy($queue_name); + if ($value) { + $self->application->redis->get( + $value, + sub { + $self->finish(shift); + } + ); + } + else { + $self->http_error( 'no job', 404 ); } - ); - } - else { - $self->http_error('no job', 404); - } + } + ); } - ); - } + } + ); } ); } |