Multiple delayed jobs using in a ruby class

I have one sudo code here, using delayedjob with rails, actually tired
in some cases it getting weird, i want to call the first delay and after
that is finished, then only start second delay, so i have used the
priority. Is this the proper way to do this or is anything wrong?

class Core
def foo
priority = 0
if condition1
if condition2
self.delay(priority: priority).foo1(priority)
self.delay(priority: priority).foo1(priority)

def foo1(priority)
if condition1
if condition2
priority +=1
self.delay(priority: priority).foo1(priority)
priority +=1
self.delay(priority: priority).foo1(priority)

If you want to sequence the jobs why not just make it one job where the
second “job” is just a method call? One important purpose of
jobs like this is to get them out of the way of a main loop. By making
one job you’ve done that so there’s no obvious (so far) pressure to punt
the other one since you’re not in that main loop any more.

Your pseudo code leaves me with more questions than answers so maybe
explain what you’re trying to actually do?

Hi, thanks for the response paul, actually i am trying to do export the
csv, so that will take bit time to getting data and push to s3 that’s
why i
put the delay, so one delay is fine to doing this long job? is this the
normal way basically i am get rid of this multiple delay, because some
times it wrap up wrong data

You could try something like,

def export_csv_and_push_to_s3
export_to_csv unless csv_exists?

The fact it takes a long time shouldn’t matter (so long as you’ve set
DJ timeout appropriately). Presumably you’re storing your CSV somewhere
locally and your object has a way of retrieving that (csv_exists?) If
part of export_csv_and_push_to_s3 fails it’ll skip the CSV generation
time if it has completed it already.

You could optionally delay push_to_s3 altho I’m not really seeing the

Either way you definitely should not (IMO) be attempting to orchestrate
some sequence during the original job scheduling.