Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I really like using queues for interprocess communication. It's great to be able to spin up a ton of workers and be guaranteed that a job in the queue is only run once, is treated fairly, can be scaled horizontally, and can optionally expire if it is not handled quickly enough.

However, I can't seem to find a job queue implementation that also supports putting jobs into the queue at a specified time.

What's the best way to attack this problem? Does a queue like this exist?

So far my alternatives to such a queue are:

  1. beanstalkd - supports delayed jobs, I could calculate the delta between now and the specified time.
    • imprecise: what happens on timezone changes, or really large deltas (months)
  2. "at" command - create an at job that would spin up and put the schedule job in a queue at the specified time.
    • tied to a single machine: What happens if the system restarts? How do you port jobs to a new server? Single point of failure
    • manually handle expiration if you have a long downtime.
  3. delayed_job/custom polling - create a daemon (something like delayed_job) that continuously polls a database of scheduled jobs and inserts into queue at the specified time
    • seems too complicated
share|improve this question

Something like the Open Source Job Scheduler may be appropriate...

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.