MCPcopy Create free account
hub / github.com/EasyIME/PIME / _finish

Method _finish

python/python3/tornado/curl_httpclient.py:257–309  ·  view source on GitHub ↗
(
        self,
        curl: pycurl.Curl,
        curl_error: Optional[int] = None,
        curl_message: Optional[str] = None,
    )

Source from the content-addressed store, hash-verified

255 break
256
257 def _finish(
258 self,
259 curl: pycurl.Curl,
260 curl_error: Optional[int] = None,
261 curl_message: Optional[str] = None,
262 ) -> None:
263 info = curl.info # type: ignore
264 curl.info = None # type: ignore
265 self._multi.remove_handle(curl)
266 self._free_list.append(curl)
267 buffer = info["buffer"]
268 if curl_error:
269 assert curl_message is not None
270 error = CurlError(curl_error, curl_message) # type: Optional[CurlError]
271 assert error is not None
272 code = error.code
273 effective_url = None
274 buffer.close()
275 buffer = None
276 else:
277 error = None
278 code = curl.getinfo(pycurl.HTTP_CODE)
279 effective_url = curl.getinfo(pycurl.EFFECTIVE_URL)
280 buffer.seek(0)
281 # the various curl timings are documented at
282 # http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html
283 time_info = dict(
284 queue=info["curl_start_ioloop_time"] - info["queue_start_time"],
285 namelookup=curl.getinfo(pycurl.NAMELOOKUP_TIME),
286 connect=curl.getinfo(pycurl.CONNECT_TIME),
287 appconnect=curl.getinfo(pycurl.APPCONNECT_TIME),
288 pretransfer=curl.getinfo(pycurl.PRETRANSFER_TIME),
289 starttransfer=curl.getinfo(pycurl.STARTTRANSFER_TIME),
290 total=curl.getinfo(pycurl.TOTAL_TIME),
291 redirect=curl.getinfo(pycurl.REDIRECT_TIME),
292 )
293 try:
294 info["callback"](
295 HTTPResponse(
296 request=info["request"],
297 code=code,
298 headers=info["headers"],
299 buffer=buffer,
300 effective_url=effective_url,
301 error=error,
302 reason=info["headers"].get("X-Http-Reason", None),
303 request_time=self.io_loop.time() - info["curl_start_ioloop_time"],
304 start_time=info["curl_start_time"],
305 time_info=time_info,
306 )
307 )
308 except Exception:
309 self.handle_callback_exception(info["callback"])
310
311 def handle_callback_exception(self, callback: Any) -> None:
312 app_log.error("Exception in callback %r", callback, exc_info=True)

Callers 1

Calls 7

HTTPResponseClass · 0.90
CurlErrorClass · 0.85
timeMethod · 0.80
appendMethod · 0.45
closeMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected