簡體   English   中英

龍卷風:如何生成兩個請求並在完成后處理結果

[英]Tornado: how to spawn two requests and process results as they are done

我對龍卷風有些迷茫,可以就如何解決我要解決的問題使用一些建議。 在處理請求時,我需要對其他服務進行兩次調用,並處理結果,並在請求完成后返回客戶端,而不是等待所有請求完成。 滿足我需要的第一個結果將返回給呼叫者。

我一直在閱讀tornado.gen,協程和期貨,並且對於該如何使用感到非常困惑。 我確實看到我將需要使用tornado.gen.WaitIterator()來獲取期貨的結果。 我不確定如何發出兩個外部請求以及如何將它們放在一起。

from tornado import gen, httpclient

async def foo():
    client = httpclient.AsyncHTTPClient()
    waiter = gen.WaitIterator(client.fetch(url1), client.fetch(url2))
    async for resp in waiter:
        # Do something with resp.
        # waiter.current_index tells you which request this is.

如果您只想處理第一個結果,則可以在async for循環內部returnbreak (盡管有時這會使有關已開始但從未等待的期貨的日志成為垃圾郵件)。

WaitIterator的文檔中有更多示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM