Python tornado.httpclient.HTTPResponse() Examples
The following are 30
code examples of tornado.httpclient.HTTPResponse().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
tornado.httpclient
, or try the search function
.
Example #1
Source File: simple_httpclient.py From tornado-zh with MIT License | 6 votes |
def _handle_exception(self, typ, value, tb): if self.final_callback: self._remove_timeout() if isinstance(value, StreamClosedError): if value.real_error is None: value = HTTPError(599, "Stream closed") else: value = value.real_error self._run_callback(HTTPResponse(self.request, 599, error=value, request_time=self.io_loop.time() - self.start_time, )) if hasattr(self, "stream"): # TODO: this may cause a StreamClosedError to be raised # by the connection's Future. Should we cancel the # connection more gracefully? self.stream.close() return True else: # If our callback has already been called, we are probably # catching an exception that is not caused by us but rather # some child of our callback. Rather than drop it on the floor, # pass it along, unless it's just the stream being closed. return isinstance(value, StreamClosedError)
Example #2
Source File: simple_httpclient.py From teleport with Apache License 2.0 | 6 votes |
def _handle_exception(self, typ, value, tb): if self.final_callback: self._remove_timeout() if isinstance(value, StreamClosedError): if value.real_error is None: value = HTTPStreamClosedError("Stream closed") else: value = value.real_error self._run_callback(HTTPResponse(self.request, 599, error=value, request_time=self.io_loop.time() - self.start_time, start_time=self.start_wall_time, )) if hasattr(self, "stream"): # TODO: this may cause a StreamClosedError to be raised # by the connection's Future. Should we cancel the # connection more gracefully? self.stream.close() return True else: # If our callback has already been called, we are probably # catching an exception that is not caused by us but rather # some child of our callback. Rather than drop it on the floor, # pass it along, unless it's just the stream being closed. return isinstance(value, StreamClosedError)
Example #3
Source File: simple_httpclient.py From teleport with Apache License 2.0 | 6 votes |
def _on_timeout(self, key, info=None): """Timeout callback of request. Construct a timeout HTTPResponse when a timeout occurs. :arg object key: A simple object to mark the request. :info string key: More detailed timeout information. """ request, callback, timeout_handle = self.waiting[key] self.queue.remove((key, request, callback)) error_message = "Timeout {0}".format(info) if info else "Timeout" timeout_response = HTTPResponse( request, 599, error=HTTPTimeoutError(error_message), request_time=self.io_loop.time() - request.start_time) self.io_loop.add_callback(callback, timeout_response) del self.waiting[key]
Example #4
Source File: simple_httpclient.py From viewfinder with Apache License 2.0 | 6 votes |
def _handle_exception(self, typ, value, tb): if self.final_callback: self._remove_timeout() self._run_callback(HTTPResponse(self.request, 599, error=value, request_time=self.io_loop.time() - self.start_time, )) if hasattr(self, "stream"): self.stream.close() return True else: # If our callback has already been called, we are probably # catching an exception that is not caused by us but rather # some child of our callback. Rather than drop it on the floor, # pass it along. return False
Example #5
Source File: simple_httpclient.py From pySINDy with MIT License | 6 votes |
def _handle_exception(self, typ, value, tb): if self.final_callback: self._remove_timeout() if isinstance(value, StreamClosedError): if value.real_error is None: value = HTTPStreamClosedError("Stream closed") else: value = value.real_error self._run_callback(HTTPResponse(self.request, 599, error=value, request_time=self.io_loop.time() - self.start_time, start_time=self.start_wall_time, )) if hasattr(self, "stream"): # TODO: this may cause a StreamClosedError to be raised # by the connection's Future. Should we cancel the # connection more gracefully? self.stream.close() return True else: # If our callback has already been called, we are probably # catching an exception that is not caused by us but rather # some child of our callback. Rather than drop it on the floor, # pass it along, unless it's just the stream being closed. return isinstance(value, StreamClosedError)
Example #6
Source File: utils.py From binderhub with BSD 3-Clause "New" or "Revised" License | 6 votes |
def fetch_mock(self, request): """Fetch a mocked request Arguments: request (HTTPRequest): the request to fetch Returns: HTTPResponse constructed from the info stored in the mocks Raises: HTTPError if the cached response has status >= 400 """ mock_data = self.mocks[self.url_key(request.url)] code = mock_data.get('code', 200) headers = HTTPHeaders(mock_data.get('headers', {})) response = HTTPResponse(request, code, headers=headers) response.buffer = io.BytesIO(mock_data['body'].encode('utf8')) if code >= 400: raise HTTPError(mock_data['code'], response=response) return response
Example #7
Source File: simple_httpclient.py From viewfinder with Apache License 2.0 | 6 votes |
def _handle_exception(self, typ, value, tb): if self.final_callback: self._remove_timeout() self._run_callback(HTTPResponse(self.request, 599, error=value, request_time=self.io_loop.time() - self.start_time, )) if hasattr(self, "stream"): self.stream.close() return True else: # If our callback has already been called, we are probably # catching an exception that is not caused by us but rather # some child of our callback. Rather than drop it on the floor, # pass it along. return False
Example #8
Source File: simple_httpclient.py From pySINDy with MIT License | 6 votes |
def _on_timeout(self, key, info=None): """Timeout callback of request. Construct a timeout HTTPResponse when a timeout occurs. :arg object key: A simple object to mark the request. :info string key: More detailed timeout information. """ request, callback, timeout_handle = self.waiting[key] self.queue.remove((key, request, callback)) error_message = "Timeout {0}".format(info) if info else "Timeout" timeout_response = HTTPResponse( request, 599, error=HTTPTimeoutError(error_message), request_time=self.io_loop.time() - request.start_time) self.io_loop.add_callback(callback, timeout_response) del self.waiting[key]
Example #9
Source File: auth.py From teleport with Apache License 2.0 | 6 votes |
def _on_request_token( self, authorize_url: str, callback_uri: Optional[str], response: httpclient.HTTPResponse, ) -> None: handler = cast(RequestHandler, self) request_token = _oauth_parse_response(response.body) data = ( base64.b64encode(escape.utf8(request_token["key"])) + b"|" + base64.b64encode(escape.utf8(request_token["secret"])) ) handler.set_cookie("_oauth_request_token", data) args = dict(oauth_token=request_token["key"]) if callback_uri == "oob": handler.finish(authorize_url + "?" + urllib.parse.urlencode(args)) return elif callback_uri: args["oauth_callback"] = urllib.parse.urljoin( handler.request.full_url(), callback_uri ) handler.redirect(authorize_url + "?" + urllib.parse.urlencode(args))
Example #10
Source File: auth.py From opendevops with GNU General Public License v3.0 | 6 votes |
def _on_request_token( self, authorize_url: str, callback_uri: Optional[str], response: httpclient.HTTPResponse, ) -> None: handler = cast(RequestHandler, self) request_token = _oauth_parse_response(response.body) data = ( base64.b64encode(escape.utf8(request_token["key"])) + b"|" + base64.b64encode(escape.utf8(request_token["secret"])) ) handler.set_cookie("_oauth_request_token", data) args = dict(oauth_token=request_token["key"]) if callback_uri == "oob": handler.finish(authorize_url + "?" + urllib.parse.urlencode(args)) return elif callback_uri: args["oauth_callback"] = urllib.parse.urljoin( handler.request.full_url(), callback_uri ) handler.redirect(authorize_url + "?" + urllib.parse.urlencode(args))
Example #11
Source File: autossl.py From temboard with PostgreSQL License | 6 votes |
def protocol_switcher(request): try: host = request.headers['Host'] except KeyError: # We don't have FQDN. Fallback to socket address. This breaks # name-based virtualhost. host = '%(address)s:%(port)s' % dict( request.config.temboard, address=request.host) new_url = 'https://%s%s' % (host, request.uri) headers = HTTPHeaders({ 'Content-Length': '0', 'Location': new_url, }) logger.debug("Redirecting client to %s.", new_url) return HTTPResponse( request=request, code=301, headers=headers, # If effective_url is not set, HTTPResponse falls back to request.url, # which does not exists... See tornado.httpclient.HTTPResponse.__init__ # and tornado.httpserver.HTTPRequest. effective_url=request.full_url(), )
Example #12
Source File: mocks.py From oauthenticator with BSD 3-Clause "New" or "Revised" License | 6 votes |
def add_host(self, host, paths): """Add a host whose requests should be mocked. Args: host (str): the host to mock (e.g. 'api.github.com') paths (list(str|regex, callable)): a list of paths (or regexps for paths) and callables to be called for those paths. The mock handlers will receive the request as their only argument. Mock handlers can return: - None - int (empty response with this status code) - str, bytes for raw response content (status=200) - list, dict for JSON response (status=200) - HTTPResponse (passed unmodified) Example:: client.add_host('api.github.com', [ ('/user': lambda request: {'login': 'name'}) ]) """ self.hosts[host] = paths
Example #13
Source File: simple_httpclient.py From EventGhost with GNU General Public License v2.0 | 6 votes |
def _handle_exception(self, typ, value, tb): if self.final_callback: self._remove_timeout() if isinstance(value, StreamClosedError): if value.real_error is None: value = HTTPError(599, "Stream closed") else: value = value.real_error self._run_callback(HTTPResponse(self.request, 599, error=value, request_time=self.io_loop.time() - self.start_time, )) if hasattr(self, "stream"): # TODO: this may cause a StreamClosedError to be raised # by the connection's Future. Should we cancel the # connection more gracefully? self.stream.close() return True else: # If our callback has already been called, we are probably # catching an exception that is not caused by us but rather # some child of our callback. Rather than drop it on the floor, # pass it along, unless it's just the stream being closed. return isinstance(value, StreamClosedError)
Example #14
Source File: simple_httpclient.py From tornado-zh with MIT License | 6 votes |
def _handle_exception(self, typ, value, tb): if self.final_callback: self._remove_timeout() if isinstance(value, StreamClosedError): if value.real_error is None: value = HTTPError(599, "Stream closed") else: value = value.real_error self._run_callback(HTTPResponse(self.request, 599, error=value, request_time=self.io_loop.time() - self.start_time, )) if hasattr(self, "stream"): # TODO: this may cause a StreamClosedError to be raised # by the connection's Future. Should we cancel the # connection more gracefully? self.stream.close() return True else: # If our callback has already been called, we are probably # catching an exception that is not caused by us but rather # some child of our callback. Rather than drop it on the floor, # pass it along, unless it's just the stream being closed. return isinstance(value, StreamClosedError)
Example #15
Source File: auth.py From teleport with Apache License 2.0 | 6 votes |
def _on_request_token( self, authorize_url: str, callback_uri: Optional[str], response: httpclient.HTTPResponse, ) -> None: handler = cast(RequestHandler, self) request_token = _oauth_parse_response(response.body) data = ( base64.b64encode(escape.utf8(request_token["key"])) + b"|" + base64.b64encode(escape.utf8(request_token["secret"])) ) handler.set_cookie("_oauth_request_token", data) args = dict(oauth_token=request_token["key"]) if callback_uri == "oob": handler.finish(authorize_url + "?" + urllib.parse.urlencode(args)) return elif callback_uri: args["oauth_callback"] = urllib.parse.urljoin( handler.request.full_url(), callback_uri ) handler.redirect(authorize_url + "?" + urllib.parse.urlencode(args))
Example #16
Source File: auth.py From V1EngineeringInc-Docs with Creative Commons Attribution Share Alike 4.0 International | 6 votes |
def _on_request_token( self, authorize_url: str, callback_uri: Optional[str], response: httpclient.HTTPResponse, ) -> None: handler = cast(RequestHandler, self) request_token = _oauth_parse_response(response.body) data = ( base64.b64encode(escape.utf8(request_token["key"])) + b"|" + base64.b64encode(escape.utf8(request_token["secret"])) ) handler.set_cookie("_oauth_request_token", data) args = dict(oauth_token=request_token["key"]) if callback_uri == "oob": handler.finish(authorize_url + "?" + urllib.parse.urlencode(args)) return elif callback_uri: args["oauth_callback"] = urllib.parse.urljoin( handler.request.full_url(), callback_uri ) handler.redirect(authorize_url + "?" + urllib.parse.urlencode(args))
Example #17
Source File: tornado-crawler-demo2.py From Python_Master_Courses with GNU General Public License v3.0 | 6 votes |
def get_request(self, url, headers=None): response = None http_client = AsyncHTTPClient() try: # response = yield http_client.fetch(url, method='GET', headers=headers,request_timeout=5) # POST body = {'a': 4, 'b': 5} response: HTTPResponse = yield http_client.fetch(url, method='POST', body=str(body), headers=headers, request_timeout=5) except Exception as e: print('get_request error:{0}'.format(e)) #请求 response.request #请求头 response.headers response_body = None if response and response.code == 200: # print('fetched {0}'.format(url)) response_body = response.body if isinstance(response.body, str) \ else response.body.decode() return response_body
Example #18
Source File: curl_httpclient.py From pySINDy with MIT License | 5 votes |
def _finish(self, curl, curl_error=None, curl_message=None): info = curl.info curl.info = None self._multi.remove_handle(curl) self._free_list.append(curl) buffer = info["buffer"] if curl_error: error = CurlError(curl_error, curl_message) code = error.code effective_url = None buffer.close() buffer = None else: error = None code = curl.getinfo(pycurl.HTTP_CODE) effective_url = curl.getinfo(pycurl.EFFECTIVE_URL) buffer.seek(0) # the various curl timings are documented at # http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html time_info = dict( queue=info["curl_start_ioloop_time"] - info["queue_start_time"], namelookup=curl.getinfo(pycurl.NAMELOOKUP_TIME), connect=curl.getinfo(pycurl.CONNECT_TIME), appconnect=curl.getinfo(pycurl.APPCONNECT_TIME), pretransfer=curl.getinfo(pycurl.PRETRANSFER_TIME), starttransfer=curl.getinfo(pycurl.STARTTRANSFER_TIME), total=curl.getinfo(pycurl.TOTAL_TIME), redirect=curl.getinfo(pycurl.REDIRECT_TIME), ) try: info["callback"](HTTPResponse( request=info["request"], code=code, headers=info["headers"], buffer=buffer, effective_url=effective_url, error=error, reason=info['headers'].get("X-Http-Reason", None), request_time=self.io_loop.time() - info["curl_start_ioloop_time"], start_time=info["curl_start_time"], time_info=time_info)) except Exception: self.handle_callback_exception(info["callback"])
Example #19
Source File: websocket.py From V1EngineeringInc-Docs with Creative Commons Attribution Share Alike 4.0 International | 5 votes |
def _on_http_response(self, response: httpclient.HTTPResponse) -> None: if not self.connect_future.done(): if response.error: self.connect_future.set_exception(response.error) else: self.connect_future.set_exception( WebSocketError("Non-websocket response") )
Example #20
Source File: curl_httpclient.py From EventGhost with GNU General Public License v2.0 | 5 votes |
def _finish(self, curl, curl_error=None, curl_message=None): info = curl.info curl.info = None self._multi.remove_handle(curl) self._free_list.append(curl) buffer = info["buffer"] if curl_error: error = CurlError(curl_error, curl_message) code = error.code effective_url = None buffer.close() buffer = None else: error = None code = curl.getinfo(pycurl.HTTP_CODE) effective_url = curl.getinfo(pycurl.EFFECTIVE_URL) buffer.seek(0) # the various curl timings are documented at # http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html time_info = dict( queue=info["curl_start_time"] - info["request"].start_time, namelookup=curl.getinfo(pycurl.NAMELOOKUP_TIME), connect=curl.getinfo(pycurl.CONNECT_TIME), pretransfer=curl.getinfo(pycurl.PRETRANSFER_TIME), starttransfer=curl.getinfo(pycurl.STARTTRANSFER_TIME), total=curl.getinfo(pycurl.TOTAL_TIME), redirect=curl.getinfo(pycurl.REDIRECT_TIME), ) try: info["callback"](HTTPResponse( request=info["request"], code=code, headers=info["headers"], buffer=buffer, effective_url=effective_url, error=error, reason=info['headers'].get("X-Http-Reason", None), request_time=time.time() - info["curl_start_time"], time_info=time_info)) except Exception: self.handle_callback_exception(info["callback"])
Example #21
Source File: handlers_test.py From jupyter_http_over_ws with Apache License 2.0 | 5 votes |
def fetch(self, request, *args, **kwargs): future = concurrent.Future() future.set_result( httpclient.HTTPResponse( request=request, code=500, error=ValueError('Expected programming error'))) return future
Example #22
Source File: simple_httpclient.py From EventGhost with GNU General Public License v2.0 | 5 votes |
def _on_timeout(self, key): request, callback, timeout_handle = self.waiting[key] self.queue.remove((key, request, callback)) timeout_response = HTTPResponse( request, 599, error=HTTPError(599, "Timeout"), request_time=self.io_loop.time() - request.start_time) self.io_loop.add_callback(callback, timeout_response) del self.waiting[key]
Example #23
Source File: autossl.py From temboard with PostgreSQL License | 5 votes |
def handle_http_connection(self, conn): # Read the trailing HTTP request and process it with protocol_switcher. # We can't rely on ioloop to trigger read because it has been already # triggered for SSL handshake. addr, port = conn.stream.socket.getsockname() try: # This is not blocking. Just read available bytes. payload = conn.stream.socket.recv(1024) except Exception: # Exception includes EWOULDBLOCK, when no bytes are available. In # this case just skip. payload = "" else: logger.debug("Received %r", payload[:128]) # Simulate conn._read_message side effect. This is required by # HTTP1Connection.write_headers() conn._request_start_line = parse_request_start_line('GET / HTTP/1.1') try: start_line, headers = parse_http_headers(payload) conn._request_start_line = start_line request = HTTPRequest( connection=conn, headers=headers, start_line=start_line, ) request.config = self.request_callback.config response = protocol_switcher(request) except Exception as e: logger.error("Failed to switch to HTTPS: %s", e) response = HTTPResponse( request=object(), code=500, headers=HTTPHeaders({'Content-Length': '0'}), effective_url='https://useless_effective_url' ) yield conn.write_headers( start_line=ResponseStartLine( 'HTTP/1.1', response.code, response.reason, ), headers=response.headers, )
Example #24
Source File: curl_httpclient.py From EventGhost with GNU General Public License v2.0 | 5 votes |
def _process_queue(self): with stack_context.NullContext(): while True: started = 0 while self._free_list and self._requests: started += 1 curl = self._free_list.pop() (request, callback) = self._requests.popleft() curl.info = { "headers": httputil.HTTPHeaders(), "buffer": BytesIO(), "request": request, "callback": callback, "curl_start_time": time.time(), } try: self._curl_setup_request( curl, request, curl.info["buffer"], curl.info["headers"]) except Exception as e: # If there was an error in setup, pass it on # to the callback. Note that allowing the # error to escape here will appear to work # most of the time since we are still in the # caller's original stack frame, but when # _process_queue() is called from # _finish_pending_requests the exceptions have # nowhere to go. callback(HTTPResponse( request=request, code=599, error=e)) else: self._multi.add_handle(curl) if not started: break
Example #25
Source File: test_gitlab.py From oauthenticator with BSD 3-Clause "New" or "Revised" License | 5 votes |
def mock_api_version(client, version): def mock_version_response(request): ret = { 'version': version, 'revision': "f79c1794977" } return HTTPResponse(request, 200, headers={'Content-Type': 'application/json'}, buffer=BytesIO(json.dumps(ret).encode('utf-8'))) regex = re.compile(API_ENDPOINT + '/version') client.hosts['gitlab.com'].append((regex, mock_version_response))
Example #26
Source File: websocket.py From teleport with Apache License 2.0 | 5 votes |
def _on_http_response(self, response: httpclient.HTTPResponse) -> None: if not self.connect_future.done(): if response.error: self.connect_future.set_exception(response.error) else: self.connect_future.set_exception( WebSocketError("Non-websocket response") )
Example #27
Source File: httpclient_test.py From pySINDy with MIT License | 5 votes |
def test_error_with_response(self): resp = HTTPResponse(HTTPRequest('http://example.com/'), 403) with self.assertRaises(HTTPError) as cm: resp.rethrow() e = cm.exception self.assertEqual(str(e), "HTTP 403: Forbidden") self.assertEqual(repr(e), "HTTP 403: Forbidden")
Example #28
Source File: curl_httpclient.py From pySINDy with MIT License | 5 votes |
def _process_queue(self): with stack_context.NullContext(): while True: started = 0 while self._free_list and self._requests: started += 1 curl = self._free_list.pop() (request, callback, queue_start_time) = self._requests.popleft() curl.info = { "headers": httputil.HTTPHeaders(), "buffer": BytesIO(), "request": request, "callback": callback, "queue_start_time": queue_start_time, "curl_start_time": time.time(), "curl_start_ioloop_time": self.io_loop.current().time(), } try: self._curl_setup_request( curl, request, curl.info["buffer"], curl.info["headers"]) except Exception as e: # If there was an error in setup, pass it on # to the callback. Note that allowing the # error to escape here will appear to work # most of the time since we are still in the # caller's original stack frame, but when # _process_queue() is called from # _finish_pending_requests the exceptions have # nowhere to go. self._free_list.append(curl) callback(HTTPResponse( request=request, code=599, error=e)) else: self._multi.add_handle(curl) if not started: break
Example #29
Source File: test_globus.py From oauthenticator with BSD 3-Clause "New" or "Revised" License | 5 votes |
def revoke_token_request_handler(request): assert request.method == 'POST', request.method auth_header = request.headers.get('Authorization') if auth_header: resp = BytesIO(json.dumps({'active': False}).encode('utf8')) return HTTPResponse(request=request, code=200, buffer=resp) else: return HTTPResponse(request=request, code=401)
Example #30
Source File: mocks.py From oauthenticator with BSD 3-Clause "New" or "Revised" License | 5 votes |
def fetch_impl(self, request, response_callback): urlinfo = urlparse(request.url) host = urlinfo.hostname if host not in self.hosts: app_log.warning("Not mocking request to %s", request.url) return super().fetch_impl(request, response_callback) paths = self.hosts[host] response = None for path_spec, handler in paths: if isinstance(path_spec, str): if path_spec == urlinfo.path: response = handler(request) break else: if path_spec.match(urlinfo.path): response = handler(request) break if response is None: response = HTTPResponse(request=request, code=404, reason=request.url) elif isinstance(response, int): response = HTTPResponse(request=request, code=response) elif isinstance(response, bytes): response = HTTPResponse(request=request, code=200, buffer=BytesIO(response), ) elif isinstance(response, str): response = HTTPResponse(request=request, code=200, buffer=BytesIO(response.encode('utf8')), ) elif isinstance(response, (dict, list)): response = HTTPResponse(request=request, code=200, buffer=BytesIO(json.dumps(response).encode('utf8')), headers={'Content-Type': 'application/json'}, ) response_callback(response)