Подтвердить что ты не робот

Сигнал работает только в основном потоке

Я новичок в django. Я пытаюсь запустить мой scrapy spider через представление django. Мой код scrapy отлично работает, когда я запускаю командную строку. но когда я пытаюсь запустить его на django, он терпит неудачу. Сообщение об ошибке: сигнал работает только в основном потоке.

мой код в представлении django (следующее)

from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy.crawler import CrawlerProcess
from scrapy import log, signals
from Working.spiders.workSpider import WorkSpider
from scrapy.settings import Settings
from scrapy.utils.project import get_project_settings

spider = WorkSpider(domain='scrapinghub.com')
crawler = CrawlerProcess(Settings())
crawler.start()
crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
reactor.run()

Пожалуйста, помогите мне решить эту проблему. спасибо

4b9b3361

Ответ 1

ошибка в основном говорит о том, что вы не в основном потоке, поэтому сигнал не обрабатывается.

переключение с CrawlerProcess на CrawlerRunner решило проблему для меня (я думаю, в CrawlerRunner вы находитесь в основном потоке) http://doc.scrapy.org/en/latest/topics/api.html#scrapy.crawler.CrawlerRunner

надеюсь, что это поможет вам