這個問題不是關於ruby而已。併發訪問限制的api
我有很多工人正在運行創建許多連接到外部API。這個API有一個限制。
現在我使用sidekiq和redis來限制訪問。
即在每次訪問API評級我運行工人。
然後worker啓動它檢查上次訪問API的時間,如果早於API允許它,工作者被重新計劃,否則它在redis中觸及時間並運行請求。
例如:
def run_or_schedule
limiter = RedisLimiter.new(account_token)
if limiter.can_i_run?
limiter.like
run
else
ApiWorker.perform_at(limiter.next_like, *params)
end
end
問題是,我創造了許多請求,並重新安排他們很多次。
也許有人可以推薦更好的解決方案嗎?
也許有任何設計模式存在嗎?