mirror of https://github.com/scrapy/scrapy.git
Removed Scrapy engine singleton from scrapy.core.engine.scrapyengine. Now
engine can only be accesed through Scrapy Manager 'engine' attribute - ie. scrapy.core.manager.engine.
This commit is contained in:
parent
2d3135603e
commit
dff763c683
|
|
@ -10,7 +10,7 @@ from twisted.internet import reactor
|
|||
from scrapy.xlib.pydispatch import dispatcher
|
||||
|
||||
from scrapy.core import signals
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.conf import settings
|
||||
|
||||
class CloseSpider(object):
|
||||
|
|
@ -29,13 +29,14 @@ class CloseSpider(object):
|
|||
dispatcher.connect(self.spider_closed, signal=signals.spider_closed)
|
||||
|
||||
def spider_opened(self, spider):
|
||||
self.tasks[spider] = reactor.callLater(self.timeout, scrapyengine.close_spider, \
|
||||
spider=spider, reason='closespider_timeout')
|
||||
self.tasks[spider] = reactor.callLater(self.timeout, \
|
||||
scrapymanager.engine.close_spider, spider=spider, \
|
||||
reason='closespider_timeout')
|
||||
|
||||
def item_passed(self, item, spider):
|
||||
self.counts[spider] += 1
|
||||
if self.counts[spider] == self.itempassed:
|
||||
scrapyengine.close_spider(spider, 'closespider_itempassed')
|
||||
scrapymanager.engine.close_spider(spider, 'closespider_itempassed')
|
||||
|
||||
def spider_closed(self, spider):
|
||||
self.counts.pop(spider, None)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import robotparser
|
|||
from scrapy.xlib.pydispatch import dispatcher
|
||||
|
||||
from scrapy.core import signals
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.core.exceptions import NotConfigured, IgnoreRequest
|
||||
from scrapy.http import Request
|
||||
from scrapy.utils.httpobj import urlparse_cached
|
||||
|
|
@ -42,7 +42,7 @@ class RobotsTxtMiddleware(object):
|
|||
self._parsers[netloc] = None
|
||||
robotsurl = "%s://%s/robots.txt" % (url.scheme, url.netloc)
|
||||
robotsreq = Request(robotsurl, priority=self.DOWNLOAD_PRIORITY)
|
||||
dfd = scrapyengine.download(robotsreq, spider)
|
||||
dfd = scrapymanager.engine.download(robotsreq, spider)
|
||||
dfd.addCallback(self._parse_robots)
|
||||
self._spider_netlocs[spider].add(netloc)
|
||||
return self._parsers[netloc]
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ import cPickle as pickle
|
|||
|
||||
from scrapy.xlib.pydispatch import dispatcher
|
||||
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.core.exceptions import NotConfigured
|
||||
from scrapy.core import signals
|
||||
from scrapy.utils.response import response_httprepr
|
||||
|
|
@ -60,7 +60,7 @@ class ItemSamplerPipeline(object):
|
|||
stats.set_value("items_sampled", sampled, spider=spider)
|
||||
log.msg("Sampled %s" % item, spider=spider, level=log.INFO)
|
||||
if close_spider and sampled == items_per_spider:
|
||||
scrapyengine.close_spider(spider)
|
||||
scrapymanager.engine.close_spider(spider)
|
||||
return item
|
||||
|
||||
def engine_stopped(self):
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ from scrapy.xlib.pydispatch import dispatcher
|
|||
from scrapy.core import signals
|
||||
from scrapy import log
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.exceptions import NotConfigured
|
||||
from scrapy.mail import MailSender
|
||||
from scrapy.conf import settings
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from twisted.internet.defer import Deferred, DeferredList
|
|||
from scrapy.utils.defer import mustbe_deferred, defer_result
|
||||
from scrapy import log
|
||||
from scrapy.core import signals
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.utils.request import request_fingerprint
|
||||
from scrapy.utils.misc import arg_to_iter
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ class MediaPipeline(object):
|
|||
|
||||
"""
|
||||
request.priority = self.DOWNLOAD_PRIORITY
|
||||
return scrapyengine.download(request, info.spider)
|
||||
return scrapymanager.engine.download(request, info.spider)
|
||||
|
||||
def media_to_download(self, request, info):
|
||||
""" Ongoing request hook pre-cache
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ from scrapy.xlib.pydispatch import dispatcher
|
|||
from collections import defaultdict
|
||||
|
||||
from scrapy.core import signals
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.core.exceptions import NotConfigured, DontCloseSpider
|
||||
from scrapy.conf import settings
|
||||
|
||||
|
|
@ -26,7 +26,7 @@ class SpiderCloseDelay(object):
|
|||
|
||||
def spider_idle(self, spider):
|
||||
try:
|
||||
lastseen = scrapyengine.downloader.sites[spider].lastseen
|
||||
lastseen = scrapymanager.engine.downloader.sites[spider].lastseen
|
||||
except KeyError:
|
||||
lastseen = None
|
||||
if not lastseen:
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from itertools import imap
|
|||
from scrapy.xlib.pydispatch import dispatcher
|
||||
|
||||
from scrapy.core import signals
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.core.exceptions import NotConfigured
|
||||
from scrapy.conf import settings
|
||||
from scrapy.http import Request
|
||||
|
|
@ -61,5 +61,5 @@ class RequestLimitMiddleware(object):
|
|||
return request_or_other
|
||||
|
||||
def _pending_count(self, spider):
|
||||
pending = scrapyengine.scheduler.pending_requests.get(spider, [])
|
||||
pending = scrapymanager.engine.scheduler.pending_requests.get(spider, [])
|
||||
return len(pending)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ Live statistics extension
|
|||
from datetime import datetime
|
||||
from scrapy.xlib.pydispatch import dispatcher
|
||||
from scrapy.core import signals
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.management.web import banner, webconsole_discover_module
|
||||
|
||||
class SpiderStats(object):
|
||||
|
|
@ -44,8 +44,8 @@ class LiveStats(object):
|
|||
self.domains[spider].crawled += 1
|
||||
|
||||
def webconsole_render(self, wc_request):
|
||||
sch = scrapyengine.scheduler
|
||||
dwl = scrapyengine.downloader
|
||||
sch = scrapymanager.engine.scheduler
|
||||
dwl = scrapymanager.engine.downloader
|
||||
|
||||
totdomains = totscraped = totcrawled = totscheduled = totactive = totdqueued = tottransf = 0
|
||||
s = banner(self)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ See documentation in docs/topics/extensions.rst
|
|||
"""
|
||||
|
||||
from scrapy.xlib.pydispatch import dispatcher
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.management.web import banner, webconsole_discover_module
|
||||
|
||||
class SchedulerQueue(object):
|
||||
|
|
@ -21,7 +21,7 @@ class SchedulerQueue(object):
|
|||
def webconsole_render(self, wc_request):
|
||||
s = banner(self)
|
||||
s += "<ul>\n"
|
||||
for domain, request_queue in scrapyengine.scheduler.pending_requests.iteritems():
|
||||
for domain, request_queue in scrapymanager.engine.scheduler.pending_requests.iteritems():
|
||||
s += "<li>\n"
|
||||
s += "%s (<b>%s</b> requests)\n" % (domain, len(request_queue))
|
||||
s += "<ul>\n"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ from scrapy.xlib.pydispatch import dispatcher
|
|||
|
||||
from scrapy.core import signals
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.spider import spiders
|
||||
from scrapy.management.web import banner, webconsole_discover_module
|
||||
from scrapy.conf import settings
|
||||
|
|
@ -117,7 +116,7 @@ class Spiderctl(object):
|
|||
stopped_spiders = []
|
||||
for name in args["stop_running_spiders"]:
|
||||
if name in self.running:
|
||||
scrapyengine.close_spider(self.running[name])
|
||||
scrapymanager.engine.close_spider(self.running[name])
|
||||
stopped_spiders.append(name)
|
||||
s += "Stopped spiders: <ul><li>%s</li></ul>" % "</li><li>".join(stopped_spiders)
|
||||
s += "</p>"
|
||||
|
|
@ -132,14 +131,14 @@ class Spiderctl(object):
|
|||
s += "</p>"
|
||||
if "add_pending_spiders" in args:
|
||||
for name in args["add_pending_spiders"]:
|
||||
if name not in scrapyengine.scheduler.pending_requests:
|
||||
if name not in scrapymanager.engine.scheduler.pending_requests:
|
||||
scrapymanager.queue.append_spider_name(name)
|
||||
s += "<p>"
|
||||
s += "Scheduled spiders: <ul><li>%s</li></ul>" % "</li><li>".join(args["add_pending_spiders"])
|
||||
s += "</p>"
|
||||
if "rerun_finished_spiders" in args:
|
||||
for name in args["rerun_finished_spiders"]:
|
||||
if name not in scrapyengine.scheduler.pending_requests:
|
||||
if name not in scrapymanager.engine.scheduler.pending_requests:
|
||||
scrapymanager.queue.append_spider_name(name)
|
||||
self.finished.remove(name)
|
||||
s += "<p>"
|
||||
|
|
|
|||
|
|
@ -286,5 +286,3 @@ class ExecutionEngine(object):
|
|||
|
||||
def _finish_stopping_engine(self):
|
||||
send_catch_log(signal=signals.engine_stopped, sender=self.__class__)
|
||||
|
||||
scrapyengine = ExecutionEngine()
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import signal
|
|||
|
||||
from twisted.internet import reactor, defer
|
||||
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.engine import ExecutionEngine
|
||||
from scrapy.core.queue import ExecutionQueue
|
||||
from scrapy.extension import extensions
|
||||
from scrapy import log
|
||||
|
|
@ -15,7 +15,7 @@ class ExecutionManager(object):
|
|||
def __init__(self):
|
||||
self.configured = False
|
||||
self.control_reactor = True
|
||||
self.engine = scrapyengine
|
||||
self.engine = ExecutionEngine()
|
||||
|
||||
def configure(self, control_reactor=True, queue=None):
|
||||
self.control_reactor = control_reactor
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ from twisted.internet import reactor, protocol
|
|||
from scrapy.extension import extensions
|
||||
from scrapy.core.exceptions import NotConfigured
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.spider import spiders
|
||||
from scrapy.stats import stats
|
||||
from scrapy.utils.trackref import print_live_refs
|
||||
|
|
@ -28,7 +27,7 @@ except ImportError:
|
|||
|
||||
# if you add entries here also update topics/telnetconsole.rst
|
||||
telnet_namespace = {
|
||||
'engine': scrapyengine,
|
||||
'engine': scrapymanager.engine,
|
||||
'manager': scrapymanager,
|
||||
'extensions': extensions,
|
||||
'stats': stats,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ from twisted.web import server, resource
|
|||
|
||||
from scrapy.xlib.pydispatch import dispatcher
|
||||
from scrapy.core.exceptions import NotConfigured
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.conf import settings
|
||||
|
||||
# web management signals
|
||||
|
|
@ -38,7 +38,7 @@ def banner(module=None):
|
|||
s += "<head><title>Scrapy</title></head>\n"
|
||||
s += "<body>\n"
|
||||
s += "<h1><a href='/'>Scrapy web console</a></h1>\n"
|
||||
uptime = time() - scrapyengine.start_time
|
||||
uptime = time() - scrapymanager.engine.start_time
|
||||
s += "<p>Bot: <b>%s</b> | Host: <b>%s</b> | Uptime: <b>%ds</b></p>\n" % \
|
||||
(settings['BOT_NAME'], socket.gethostname(), uptime)
|
||||
if module:
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ from scrapy.utils.misc import load_object
|
|||
from scrapy.utils.response import open_in_browser
|
||||
from scrapy.conf import settings
|
||||
from scrapy.core.manager import scrapymanager
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.queue import KeepAliveExecutionQueue
|
||||
from scrapy.http import Request, TextResponse
|
||||
|
||||
|
|
@ -59,8 +58,8 @@ class Shell(object):
|
|||
log_multiple=True)
|
||||
|
||||
print "Fetching %s..." % request
|
||||
scrapyengine.open_spider(spider)
|
||||
response = threads.blockingCallFromThread(reactor, scrapyengine.schedule, \
|
||||
scrapymanager.engine.open_spider(spider)
|
||||
response = threads.blockingCallFromThread(reactor, scrapymanager.engine.schedule, \
|
||||
request, spider)
|
||||
if response:
|
||||
self.populate_vars(url, response, request, spider)
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
from time import time
|
||||
|
||||
from scrapy.core.engine import scrapyengine
|
||||
from scrapy.core.manager import scrapymanager
|
||||
|
||||
def get_engine_status(engine=None):
|
||||
"""Return a report of the current engine status"""
|
||||
if engine is None:
|
||||
engine = scrapyengine
|
||||
engine = scrapymanager.engine
|
||||
|
||||
global_tests = [
|
||||
"time()-engine.start_time",
|
||||
|
|
|
|||
Loading…
Reference in New Issue