Merge branch 'minimal-async-seeds' into async-seeds

This commit is contained in:
Adrián Chaves 2025-04-07 12:38:51 +02:00
commit 156308f7b6
4 changed files with 17 additions and 14 deletions

View File

@ -259,7 +259,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:
@ -294,7 +294,7 @@ 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
assert self.scheduler is not None # typing
@ -309,7 +309,7 @@ class ExecutionEngine:
return None
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)
@ -342,7 +342,7 @@ class ExecutionEngine:
extra={"spider": self.spider},
)
)
return d2
return True
def _handle_downloader_output(
self, result: Request | Response | Failure, request: Request

View File

@ -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
@ -12,18 +11,12 @@ from scrapy.utils.defer import deferred_f_from_coro_f, maybe_deferred_to_future
from scrapy.utils.test import get_crawler
from .test_scheduler import MemoryScheduler
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
SLEEP_SECONDS = 0.1
class MainTestCase(TestCase):

View File

@ -11,8 +11,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"}

View File

@ -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