0
我想寫一個簡單的函數,讓我從重複創建AsyncHTTPClient
和HTTPRequest
並做client.fetch
釋放我。如何製作簡化與龍捲風AsyncHTTPClient請求的包裝?
現在,我想出了下面的代碼:
def async_fetch(url, method='GET', headers={}, body=None):
'''Fetch an HTTP resource asynchronously
using `tornado.httpclient.AsyncHTTPClient`
'''
if isinstance(body, dict):
body = urlencode(body)
request = HTTPRequest(url, method=method, headers=headers, body=body)
client = AsyncHTTPClient()
response = yield client.fetch(request)
return response.body
顯然,這是行不通的。它本身返回一個生成器,我不知道如何將它應用到RequestHandler中。
我只能返回client.fetch(client)
,這是一個任務,並且在處理程序中產生這個任務,但是我想要處理響應。
任何提示?謝謝!
謝謝!我正在檢查。沒想到它那麼簡單。同時我在文檔中記得它提到gen.Return與3.3之後的Python返回相同。所以我猜關鍵不是gen.Return,而是協程裝飾器? – 2014-11-06 09:57:45
@KenetJervet查看更新。希望它會有用。 – Vladimir 2014-11-06 10:44:57