From ac5a5b7811c27eceff7814a8456a74487b1c4743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Chaves?= Date: Mon, 7 Apr 2025 12:37:31 +0200 Subject: [PATCH] Address feedback --- scrapy/core/engine.py | 8 ++++---- tests/test_spider_start.py | 11 ++--------- tests/test_spidermiddleware_process_start.py | 3 ++- tests/utils/__init__.py | 9 +++++++++ 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/scrapy/core/engine.py b/scrapy/core/engine.py index 09cb30daf..348b1c85b 100644 --- a/scrapy/core/engine.py +++ b/scrapy/core/engine.py @@ -229,7 +229,7 @@ class ExecutionEngine: return while not self.needs_backout(): - if self._start_scheduled_request() is None: + if not self._start_scheduled_request(): break if self.spider_is_idle() and self._slot.close_if_idle: @@ -250,14 +250,14 @@ class ExecutionEngine: or self.scraper.slot.needs_backout() ) - def _start_scheduled_request(self) -> Deferred[None] | None: + def _start_scheduled_request(self) -> bool: assert self._slot is not None # typing assert self.spider is not None # typing request = self._slot.scheduler.next_request() if request is None: self.signals.send_catch_log(signals.scheduler_empty) - return None + return False d: Deferred[Response | Request] = self._download(request) d.addBoth(self._handle_downloader_output, request) @@ -290,7 +290,7 @@ class ExecutionEngine: extra={"spider": self.spider}, ) ) - return d2 + return True def _handle_downloader_output( self, result: Request | Response | Failure, request: Request diff --git a/tests/test_spider_start.py b/tests/test_spider_start.py index 02f8770e9..1815aad76 100644 --- a/tests/test_spider_start.py +++ b/tests/test_spider_start.py @@ -3,7 +3,6 @@ from asyncio import sleep import pytest from testfixtures import LogCapture -from twisted.internet.defer import Deferred from twisted.trial.unittest import TestCase from scrapy import Spider, signals @@ -11,20 +10,14 @@ from scrapy.exceptions import ScrapyDeprecationWarning from scrapy.utils.defer import deferred_f_from_coro_f, maybe_deferred_to_future from scrapy.utils.test import get_crawler +from .utils import twisted_sleep + SLEEP_SECONDS = 0.1 ITEM_A = {"id": "a"} ITEM_B = {"id": "b"} -def twisted_sleep(seconds): - from twisted.internet import reactor - - d = Deferred() - reactor.callLater(seconds, d.callback, None) - return d - - class MainTestCase(TestCase): async def _test_spider(self, spider, expected_items=None): actual_items = [] diff --git a/tests/test_spidermiddleware_process_start.py b/tests/test_spidermiddleware_process_start.py index 9265b9d35..725833a49 100644 --- a/tests/test_spidermiddleware_process_start.py +++ b/tests/test_spidermiddleware_process_start.py @@ -8,8 +8,9 @@ from scrapy import Spider, signals from scrapy.exceptions import ScrapyDeprecationWarning from scrapy.utils.defer import deferred_f_from_coro_f, maybe_deferred_to_future from scrapy.utils.test import get_crawler +from tests.test_spider_start import SLEEP_SECONDS -from .test_spider_start import SLEEP_SECONDS, twisted_sleep +from .utils import twisted_sleep ITEM_A = {"id": "a"} ITEM_B = {"id": "b"} diff --git a/tests/utils/__init__.py b/tests/utils/__init__.py index e69de29bb..e5e56f414 100644 --- a/tests/utils/__init__.py +++ b/tests/utils/__init__.py @@ -0,0 +1,9 @@ +from twisted.internet.defer import Deferred + + +def twisted_sleep(seconds): + from twisted.internet import reactor + + d = Deferred() + reactor.callLater(seconds, d.callback, None) + return d