2017-04-19 181 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,而不是做任何事情来阻止它。如果这些都没有指向正确的方向,则需要共享更完整的代码示例。