Source code for scrapy.core.downloader.handlers.base

from __future__ import annotations

from abc import ABC, abstractmethod
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    # typing.Self requires Python 3.11
    from typing_extensions import Self

    from scrapy import Request
    from scrapy.crawler import Crawler
    from scrapy.http import Response


[docs] class BaseDownloadHandler(ABC): """Optional base class for download handlers.""" lazy: bool = False def __init__(self, crawler: Crawler): self.crawler = crawler
[docs] @classmethod def from_crawler(cls, crawler: Crawler) -> Self: return cls(crawler)
[docs] @abstractmethod async def download_request(self, request: Request) -> Response: raise NotImplementedError
[docs] async def close(self) -> None: # noqa: B027 pass