Delay in completing a task at a specific time

I want to send some letters through delayed_job

However, I want to send them before and after the event.

My concern is whether this will actually work:

 def one_week_before_run AtendeeMailer.delay(run_at: '8th October 2016'.to_datetime).mudrun_about_to_start(self) end def thank_you_note AtendeeMailer.delay(run_at: '18th October 2016'.to_datetime.end_of_day).thank_you(self) end 

or should I choose a different approach?

+1
source share
1 answer

A deferred task selects a task to run only if run_at <= current time. Refer to DJ request for job selection

 SELECT `delayed_jobs`.* FROM `delayed_jobs` WHERE ((run_at <= '2016-09-27 00:49:59' AND (locked_at IS NULL OR locked_at < '2016-09-27 00:24:59') OR locked_by = 'host:Madhubalans-Air pid:74314') AND failed_at IS NULL) ORDER BY priority ASC, run_at ASC LIMIT 1 

Your code sets run_at until 2016-10-18 00:00:00 and 2016-10-18 23:59:59. This way your code will work as you expect :)

+1
source

All Articles