如何在龙卷风中一次启动多个任务

How start multiple tasks at once in tornado

我有一个 for .. in .. : 循环,它正在调用一个方法并等待结果。我怎样才能让这个循环一次开始,然后等待结果?

这是我的代码:

@gen.coroutine
def update_all( self ):
    for service in self.port_list:
        response = yield self.update_service( str( service.get( 'port' ) ) )
        self.response_list.append( response )

    self.response = json.dumps( self.response_list )

    return self.response

谢谢!

构建一个列表(由 update_service() 返回的 Future 个对象),然后 yield 列表:

@gen.coroutine
def update_all( self ):

    futures = []
    for service in self.port_list:
        futures.append(self.update_service(str(service.get('port'))))

    self.response_list = yield futures
    self.response = json.dumps( self.response_list )

    return self.response