600 requests every 600 seconds - 1 time per second on avg.
Not very fast!
1) Depending on the size of your company and level, I would check the FB to see if you can get the limit raised for you.
2) You can stick with DelayedJob, no need to reinvent the wheel. You just need to change the scheduler.
In my DelayedJob installation, I use the "run_at" column more than just setting the time to repeat jobs. I also use it as a time to start a task in the first place. You can also use it to throttle your jobs.
Changed in file DelayedJob job.rb:
# added run_at param
For your purpose, I would track the last time the FB api call was called, and assign the next version of run_at to the time, at least for a second.
Advantage: you can alternate other non-FB tasks using FB-api calls.
Larry k
source share