I think your case is fairly common, but I'd suggest you try Brandon's solution.
In one situation, for example, I have to expire a record 15 minutes after it was last edited. So every time the record gets changed I schedule an 'expire' job. At any time, I might have a handful of these jobs in the queue.
Then, my expire method looks like:
def expire
do_the_expiration if updated_at < 15.minutes.ago
end
That way, if there are old jobs around, they simply become noops, and I can safely ignore them.
I use this pattern quite a bit, and recommend it. Maybe you can check when you last fetched, and only do a new one if enough time has passed.
Cheers,
-Daniel