Don't Wait For An Async Function To Finish
I have a async tornado server that calls an async function. However, that function just does some background processing, and I don't want to wait for it to finish. How can I do thi
Solution 1:
Simply remove the yield before self.process('data'). It will still run, but the get function won't wait for it to finish. Example:
@gen.coroutine
def get(self):
print 'a'
yield self.process('data') # I don't want to wait here
print 'b'
self.write('page')
@gen.coroutine
def process(self, arg):
print 'c'
d = yield gen.Task(self.otherFunc, arg)
print 'd'
raise gen.Return(None)
Will give a,c,d,b but:
@gen.coroutine
def get(self):
print 'a'
self.process('data') # I don't want to wait here
print 'b'
self.write('page')
@gen.coroutine
def process(self, arg):
print 'c'
d = yield gen.Task(self.otherFunc, arg)
print 'd'
raise gen.Return(None)
Can give a,c,b,d or a,b,c,d depending on order execution, but it will no longer wait until process is done to get to 'b'.
Post a Comment for "Don't Wait For An Async Function To Finish"