Devo chiamare il crawler da un altro file python, per il quale utilizzo il seguente codice.Chiamare Scrapy da un altro file senza threading
def crawl_koovs():
spider = SomeSpider()
settings = get_project_settings()
crawler = Crawler(settings)
crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
reactor.run()
In esecuzione di questo, ottengo l'errore come
exceptions.ValueError: signal only works in main thread
L'unica soluzione che ho trovato è quello di utilizzare
reactor.run(installSignalHandlers=False)
che non voglio usare come voglio chiamare questo metodo più volte e volere che il reattore venga fermato prima della prossima chiamata. Cosa posso fare per farlo funzionare (magari forzare il crawler ad avviarsi nello stesso thread 'principale')?
Ecco un [codice di esempio di lavoro] (http://stackoverflow.com/questions/18838494/scrapy-very-basic-example/27744766#27744766) I Ho usato per eseguire Scrapy dalla sceneggiatura prima. Spero che sia d'aiuto. – alecxe