将请求http帖子转换为龙卷风发布请求

时间:2017-04-19 22:11:26

标签: macos tornado python-3.6

我有以下代码:

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

其中form_data和headers是输入的字典。这使用请求正确返回状态为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

tornado HTTPRequest对象有一个可选的超时参数,但即使是60秒似乎也无法解决问题。

我如何构建龙卷风帖子请求以便使用请求http模块重新创建我的运行方式?

1 个答案:

答案 0 :(得分:1)

http_client.fetch未返回response,它会返回一个解析为响应的Future。您需要使用async defresponse = await http_client.fetch(...)函数中调用它。您还必须启动IOLoop,而不是做任何事情来阻止它。如果这些都没有指向正确的方向,那么您需要共享更完整的代码示例。