MCPcopy
hub / github.com/scrapy/scrapy / _cb_bodyready

Method _cb_bodyready

scrapy/core/downloader/handlers/http11.py:509–573  ·  view source on GitHub ↗
(
        self, txresponse: TxResponse, request: Request
    )

Source from the content-addressed store, hash-verified

507 return headers
508
509 def _cb_bodyready(
510 self, txresponse: TxResponse, request: Request
511 ) -> _ResultT | Deferred[_ResultT]:
512 if stop_download := check_stop_download(
513 signals.headers_received,
514 self._crawler,
515 request,
516 headers=self._headers_from_twisted_response(txresponse),
517 body_length=txresponse.length,
518 ):
519 txresponse._transport.stopProducing()
520 txresponse._transport.loseConnection()
521 return {
522 "txresponse": txresponse,
523 "stop_download": stop_download,
524 }
525
526 # deliverBody hangs for responses without body
527 if cast("int", txresponse.length) == 0:
528 return {
529 "txresponse": txresponse,
530 }
531
532 maxsize = request.meta.get("download_maxsize", self._maxsize)
533 warnsize = request.meta.get("download_warnsize", self._warnsize)
534 expected_size = (
535 cast("int", txresponse.length)
536 if txresponse.length != UNKNOWN_LENGTH
537 else -1
538 )
539 fail_on_dataloss = request.meta.get(
540 "download_fail_on_dataloss", self._fail_on_dataloss
541 )
542
543 if maxsize and expected_size > maxsize:
544 warning_msg = get_maxsize_msg(
545 expected_size, maxsize, request, expected=True
546 )
547 logger.warning(warning_msg)
548 txresponse._transport.loseConnection()
549 raise DownloadCancelledError(warning_msg)
550
551 if warnsize and expected_size > warnsize:
552 logger.warning(
553 get_warnsize_msg(expected_size, warnsize, request, expected=True)
554 )
555
556 d: Deferred[_ResultT] = Deferred(partial(self._cancel, txresponse=txresponse))
557 txresponse.deliverBody(
558 _ResponseReader(
559 finished=d,
560 txresponse=txresponse,
561 request=request,
562 maxsize=maxsize,
563 warnsize=warnsize,
564 fail_on_dataloss=fail_on_dataloss,
565 crawler=self._crawler,
566 tls_verbose_logging=self._tls_verbose_logging,

Callers

nothing calls this directly

Calls 8

check_stop_downloadFunction · 0.90
get_maxsize_msgFunction · 0.90
get_warnsize_msgFunction · 0.90
_ResponseReaderClass · 0.85
stopProducingMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected