Python asyncio http request module
这是我发出请求的方式:
1 2 3 4 5 | from aiohttp import request def make_request(self, request_payload, request_headers, request_method, request_url_path): url = self.config["HOST_URL"] +"/" + request_url_path response = yield from request(request_method, url=url, params=request_payload, headers=request_headers, allow_redirects=False) return response |
如果请求成功,这里的预期响应是
问题是,我的响应状态为200,这是来自最终URL的响应。 我怎样才能实现自己想要的?
" allow_redirects = False"应该起作用了,但是没有起作用。 我不确定如何才能使其按需工作。
注意:如果使用基于生成器的旧语法,则应使用装饰器
还请提供可复制的最小代码段(包括url,其他参数,您的Python版本),因为我没有得到您正在谈论的行为:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import asyncio from aiohttp import request @asyncio.coroutine def make_request(): url = 'http://httpbin.org/redirect/1' response = yield from request(method='GET', url=url, allow_redirects=False) print(response) loop = asyncio.get_event_loop() loop.run_until_complete(make_request()) |
输出:
1 2 | <ClientResponse(http://httpbin.org/redirect/1) [302 FOUND]> <CIMultiDictProxy('Connection': 'keep-alive', 'Server': 'meinheld/0.6.1', 'Date': 'Wed, 15 Nov 2017 16:28:55 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Content-Length': '215', 'Location': '/get', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true', 'X-Powered-By': 'Flask', 'X-Processed-Time': '0.000524044036865', 'Via': '1.1 vegur')> |
请求支持可选的allow_redirects参数,您可以将其设置为False。