我正在尝试等待异步代码的条件,这是代码段:
condition = Celluloid::Condition.new
Rails.logger.debug "Sending RPC request to #{subject}"
NATS.start uri: ENV['NATS_SERVER'] do
Rails.logger.debug "Connected to #{ENV['NATS_SERVER']}"
sid = NATS.request(subject,msg) do |response|
Rails.logger.debug "Assigning response"
condition.signal response
NATS.stop
end
NATS.timeout(sid, 1) do
NATS.stop
condition.signal ASYNC_ERROR
raise "One second timeout waiting for a NATS RPC reply from #{subject}"
end
end
result = condition.wait
if result = ASYNC_ERROR
raise "Error in RPC call"
else
return result
end
我得到了例外Celluloid::Condition signaled spuriously
,但没有额外的信息,我真的不明白为什么会导致它,并且https://github.com/celluloid/celluloid/wiki/Conditions没有提供更多信息。
为什么会出现这种情况,我该如何解决?