Cette question ne concerne pas seulement le rubis.accès simultané à l'API avec des limites
J'ai beaucoup de travailleurs en cours d'exécution pour créer de nombreuses connexions à l'API externe. Cette API a une limite.
À l'heure actuelle, j'utilise sidekiq et redis pour limiter l'accès.
c.-à-d. À chaque accès à l'API que j'ai évalué comme étant un travailleur.
Ensuite, le travail est démarré il vérifier quand était la dernière fois pour accéder à l'API, si est plus tôt que cette API le permet, le travailleur est replanifié, sinon il touche le temps dans redis et demande d'exécution.
ex:
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
Le problème est que je crée beaucoup demande et ils plusieurs fois reprogrammée.
Peut-être que quelqu'un peut recommander une meilleure solution?
Peut-être existe-t-il des modèles de conception pour cela?