最近我正在写一个比特币的自动交易脚本。想实现并行 (或称为异步?后台任务?) 同时调用买和卖两个方法。目前使用的是concurrent-ruby
这个 gem。不知道什么原因有时候会造成多次重复执行,可能在某个地方有 retry 的机制吧。
这种异步的实时并行处理,大家推荐用什么?sidekiq 的话,需要启动两个服务:redis+sidekiq,感觉有点笨重,不知道可靠性怎么样?
示例代码:
class Trader
# gem的官网:https://github.com/ruby-concurrency/concurrent-ruby
include Concurrent::Async
def initialize
# init api client
end
def buy(price, size)
# call buy api
end
def sell(price, size)
# call sell api
end
end
调用样例:
my_trader = Trader.new
# 普通调用方式
my_trader.buy(11, 0.1)
my_trader.sell(12, 0.1)
# 异步调用方式
my_trader.async.buy(11, 0.1)
my_trader.async.sell(12, 0.1)