Gibt es eine Möglichkeit, alle Spider in einem Scrapy-Projekt auszuführen, ohne den Scrapy-Daemon zu verwenden? Früher gab es eine Möglichkeit, mehrere Spider mit scrapy crawl
auszuführen, aber diese Syntax wurde entfernt und Scrapys Code änderte sich ziemlich stark.Führen Sie alle Spider lokal in Scrapy aus.
habe ich versucht, meine eigenen Befehl zu erstellen:
from scrapy.command import ScrapyCommand
from scrapy.utils.misc import load_object
from scrapy.conf import settings
class Command(ScrapyCommand):
requires_project = True
def syntax(self):
return '[options]'
def short_desc(self):
return 'Runs all of the spiders'
def run(self, args, opts):
spman_cls = load_object(settings['SPIDER_MANAGER_CLASS'])
spiders = spman_cls.from_settings(settings)
for spider_name in spiders.list():
spider = self.crawler.spiders.create(spider_name)
self.crawler.crawl(spider)
self.crawler.start()
Aber sobald eine Spinne mit self.crawler.crawl()
registriert ist, erhalte ich Behauptung Fehler für alle anderen Spinnen:
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/scrapy/cmdline.py", line 138, in _run_command
cmd.run(args, opts)
File "/home/blender/Projects/scrapers/store_crawler/store_crawler/commands/crawlall.py", line 22, in run
self.crawler.crawl(spider)
File "/usr/lib/python2.7/site-packages/scrapy/crawler.py", line 47, in crawl
return self.engine.open_spider(spider, requests)
File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 1214, in unwindGenerator
return _inlineCallbacks(None, gen, Deferred())
--- <exception caught here> ---
File "/usr/lib/python2.7/site-packages/twisted/internet/defer.py", line 1071, in _inlineCallbacks
result = g.send(result)
File "/usr/lib/python2.7/site-packages/scrapy/core/engine.py", line 215, in open_spider
spider.name
exceptions.AssertionError: No free spider slots when opening 'spidername'
Gibt es eine Möglichkeit zu mach das? Ich würde eher nicht damit beginnen, Core-Scrapy-Komponenten zu untergliedern, nur um all meine Spinnen so laufen zu lassen.
Welche Scrapy-Version verwenden Sie? '$ scrapy version -v' –
Kennen Sie [' scrapyd'] (http://doc.scrapy.org/en/latest/topics/scrapyd.html)? –
'0.16.4'. Ich weiß von Scrapyd, aber ich teste diese Spinnen lokal, also würde ich es lieber nicht benutzen. – Blender