如何在龙卷风中同时启动多个任务

时间:2015-08-16 20:27:50

标签: python asynchronous 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

谢谢!

1 个答案:

答案 0 :(得分:2)

建立一个列表(由Future返回的update_service()个对象),然后列出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