2017-04-19 164 views
0

我有以下代碼:轉換一個請求HTTP POST龍捲風post請求

import requests 
s = requests.Session() 
r = s.post(AUTHENTICATION_URI, data=form_data, headers=headers) 

其中form_data和標頭是輸入字典。這使用請求狀態爲200,並且是正確的(我可以在以後的代碼中使用會話)。

我試圖將它轉換爲使用龍捲風和他們的HTTP客戶端,但是當我運行此:

from urllib.parse import urlencode 
from tornado import httpclient 
http_client = httpclient.HTTPClient() 

response = http_client.fetch(
    httpclient.HTTPRequest(
    AUTHENTICATION_URI, method='POST', request_timeout=60, body=urlencode(form_data), headers=headers)) 

我遇到超時:

tornado.httpclient.HTTPError: HTTP 599: Timeout during request 

龍捲風HttpRequest對象有一個可選的超時參數,但即使是60秒似乎也無法解決問題。

爲了重新創建我如何使用請求http模塊來運行此操作,我在構建龍捲風發佈請求方面有什麼不同?

回答

0

http_client.fetch不返回response,它返回Future解析爲響應。您需要用async def函數和response = await http_client.fetch(...)來調用它。您還必須啓動IOLoop,而不是做任何事情來阻止它。如果這些都沒有指向正確的方向,則需要共享更完整的代碼示例。