1. 程式人生 > >協程等待多個非同步呼叫(list or dict)

協程等待多個非同步呼叫(list or dict)

from tornado import gen
from tornado.httpclient import AsyncHTTPClient

@gen.coroutine
def coroutine_visit_list():
    http_client = AsyncHTTPClient()
    list_response = yield [
        http_client.fetch('www.baidu.com'),
        http_client.fetch('www.sina.com'),
        http_client.fetch('www.163.com')
    ]

    for response in list_response:
        print(response)


@gen.coroutine
def coroutine_visit_dict():
    http_client = AsyncHTTPClient()
    dict_response = yield {
        'baidu':http_client.fetch('www.baidu.com'),
        'sina':http_client.fetch('www.sina.com'),
        '163':http_client.fetch('www.163.com')}
        
    

    print(dict_response['sina'])

tornado允許一個yield等待多個非同步呼叫,只需用列表或者字典方式傳遞即可,傳遞方式是什麼,則tornado返回非同步呼叫的結果也是相同的方式!