Multiple delayed jobs using in a ruby class

I have one sudo code here, using delayedjob with rails, actually tired
but
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)
end
self.delay(priority: priority).foo1(priority)
end
end

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

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
asynchronous
jobs like this is to get them out of the way of a main loop. By making
it
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?
push_to_s3

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

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

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