andrewroth edited this page Sep 12, 2010 · 16 revisions


  • script/delayed_job / Delayed::Command
  • cap tasks
  • jewler
  • fixed locking to not allow 2nd worker to lock a failed & rescheduled job
  • add timeout to job processing
  • always return jobs in priority order (no sort_by { rand })
  • fix handle_asynchronous to correctly handle punctuated method names
  • send_at method


  • signal handler chaining


  • send_after method (basically same as send_at)
  • script/enqueue_job
  • job_errors in separate table (Job.has_many :errors)
  • wrapped updates in transactions


  • Delayed::Worker model, which tracks each job worker process in the DB


  • allow for workers to be limited to certain kinds of jobs by setting extra conditions via Delayed::Job.extra_next_task_conditions. The main reason for this is to flexibly allow for server_id and other such attributes to be used as needed.


  • Keep successfully finished jobs around, store creation/start/end timestamps
  • Munin plugins (in /contrib) for graphing queue size and average job run time


  • server_id column – jobs with this attribute specified should be handled only by workers on the specified machine. we use the hostname. (based on previous work from sbfaulkner)
  • more rake tasks (run specific job, lock, unlock)


  • I want to delete my fork to clean my account up a bit. I’ll wait till April, if you want this fork it
  • based on dsander/delayed_job (recurring jobs)
  • add option to specify how many times to recur
  • pass a read-only informational hash about the job being run


  • allow jobs to declare their own MAX_ATTEMPTS value


  • optimized fetching of jobs in huge queues. (added indexing)
  • Warning: Priority is reversed, so lower priority jobs will run first.


  • changed the daemon configuration from collectiveidea fork to allow use in a sinatra app


  • A couple of changes to maintain rails 2.0 compatibility
  • Setup a demand based spawner (Still somewhat beta but fully functional)
    • Single daemon dispatcher process forks off each job to its own process to run independently
    • User set max number of concurrently running jobs


  • Restrict workers to specific job types
  • Per job MAX_ATTEMPTS


  • Uses DataMapper instead of ActiveRecord for ORM.