move signal outside of spider

This commit is contained in:
Vostretsov Nikita 2020-02-19 12:43:53 +00:00
parent 15badc4256
commit 6ab3114d74
2 changed files with 6 additions and 3 deletions

View File

@ -17,6 +17,7 @@ from scrapy.http import Response, Request
from scrapy.utils.misc import load_object
from scrapy.utils.reactor import CallLaterOnce
from scrapy.utils.log import logformatter_adapter, failure_to_exc_info
from scrapy.spiders import WaitUntilQueueEmpty
logger = logging.getLogger(__name__)
@ -121,7 +122,7 @@ class ExecutionEngine(object):
while not self._needs_backout(spider) and slot.start_requests:
try:
request = next(slot.start_requests)
if request == spider.WaitUntilQueueEmpty:
if request == WaitUntilQueueEmpty:
break
except StopIteration:

View File

@ -14,8 +14,10 @@ from scrapy.utils.deprecate import method_is_overridden
from scrapy.utils.python import iflatten
WaitUntilQueueEmpty = object()
class Spider(object_ref):
WaitUntilQueueEmpty = object()
"""Base class for scrapy spiders. All spiders must inherit from this
class.
@ -80,7 +82,7 @@ class Spider(object_ref):
yield Request(url, dont_filter=True)
def start_requests_with_control(self):
sig = self.WaitUntilQueueEmpty
sig = WaitUntilQueueEmpty
gen_ = ((r, sig) if r != sig else (r,) for r in self.start_requests())
return iflatten(gen_)