600 Anfragen alle 600 Sekunden entspricht im Durchschnitt 1 pro Sekunde.
Nicht sehr schnell!
1) Abhängig von der Größe und dem Gewicht Ihres Unternehmens würde ich mit FB untersuchen, ob Sie das Limit für Sie erhöhen können.
2) Sie können bei DelayedJob bleiben, es ist nicht notwendig, das Rad neu zu erfinden. Sie müssen nur den Scheduler ändern.
In meiner DelayedJob-Installation verwende ich die Spalte "run_at" nicht nur, um die Zeit festzulegen, zu der die Jobs erneut ausgeführt werden sollen, sondern auch als Zeitpunkt, an dem der Job das erste Mal ausgeführt wird. Sie können es auch verwenden, um Ihre Jobs zu drosseln.
In der Datei job.rb von DelayedJob geändert:
# hinzugefügter run_at-Parameter
# z. B. Delayed::Job.enqueue NewsletterJob.new('lorem ipsum...'), 0,
# Delayed::Job.db_time_now + 15 Minuten
def self.enqueue(object, priority = 0, run_at = nil)
unless object.respond_to?(:perform)
raise ArgumentError, 'Kann keine Elemente in die Warteschlange einreihen, die nicht auf perform reagieren'
end
Job.create(:payload_object => object, :priority => priority,
:run_at => run_at)
end
Für Ihr Ziel würde ich den letzten Zeitpunkt, an dem ein FB-API-Aufruf in die Warteschlange gestellt wurde, verfolgen und den nächsten so planen, dass die Ausführung mindestens eine Sekunde später stattfindet.
Vorteil: Sie könnten andere, nicht-FB-Aufgaben zwischen den FB-API-Aufrufen einfügen.
0 Stimmen
Wenn eine Antwort Ihre Frage gelöst hat, denken Sie daran, sie durch Ankreuzen des Häkchens neben der Antwort zu "Akzeptieren".
0 Stimmen
"Ich baue eine App, die oft die Facebook Graph API aufrufen wird. Ich habe gelernt, dass sie ein Rate Limit von 600 Anfragen alle 600 Sekunden haben." Wo hast du diese Informationen her und wie zuverlässig sind sie? Vielen Dank, Wes"