mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
Merge pull request #123 from Burgestrand/faithful_perform_async
Have Redis tell us if perform_async succeeded
This commit is contained in:
commit
2e736be796
2 changed files with 10 additions and 4 deletions
|
@ -41,14 +41,13 @@ module Sidekiq
|
|||
Sidekiq.client_middleware.invoke(worker_class, item, queue) do
|
||||
payload = MultiJson.encode(item)
|
||||
Sidekiq.redis do |conn|
|
||||
conn.multi do
|
||||
_, pushed = conn.multi do
|
||||
conn.sadd('queues', queue)
|
||||
conn.rpush("queue:#{queue}", payload)
|
||||
end
|
||||
end
|
||||
pushed = true
|
||||
end
|
||||
pushed
|
||||
!! pushed
|
||||
end
|
||||
|
||||
# Redis compatibility helper. Example usage:
|
||||
|
|
|
@ -30,7 +30,7 @@ class TestClient < MiniTest::Unit::TestCase
|
|||
describe 'with mock redis' do
|
||||
before do
|
||||
@redis = MiniTest::Mock.new
|
||||
def @redis.multi; yield if block_given?; end
|
||||
def @redis.multi; [yield] * 2 if block_given?; end
|
||||
def @redis.set(*); true; end
|
||||
def @redis.sadd(*); true; end
|
||||
def @redis.srem(*); true; end
|
||||
|
@ -74,6 +74,13 @@ class TestClient < MiniTest::Unit::TestCase
|
|||
@redis.verify
|
||||
end
|
||||
|
||||
it 'handles perform_async on failure' do
|
||||
@redis.expect :rpush, nil, ['queue:default', String]
|
||||
pushed = MyWorker.perform_async(1, 2)
|
||||
refute pushed
|
||||
@redis.verify
|
||||
end
|
||||
|
||||
it 'enqueues messages to redis' do
|
||||
@redis.expect :rpush, 1, ['queue:default', String]
|
||||
pushed = Sidekiq::Client.enqueue(MyWorker, 1, 2)
|
||||
|
|
Loading…
Add table
Reference in a new issue