我有一个异步龙卷风服务器,可以调用异步函数。但是,该功能只是进行一些后台处理,我不想等待它完成。我怎样才能做到这一点?这是我的一个例子:
@gen.coroutine
def get(self):
yield self.process('data') # I don't want to wait here
self.write('page')
@gen.coroutine
def process(self, arg):
d = yield gen.Task(self.otherFunc, arg)
raise gen.Return(None)
答案 0 :(得分:3)
只需在self.process之前删除yield(' data')。它仍然会运行,但get函数不会等待它完成。例如:
@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)
将给出a,c,d,b但是:
@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)
可以根据订单执行情况给出a,c,b,d或a,b,c,d,但它不会再等到流程完成后才能进入' c'。