И добавил вызов импорта и настройки в начало файла. И, кажется, работает гладко. Я не очень хорошо разбираюсь в реакторах, и, надеюсь, мне не чего не хватает. Спасибо хоть!

е чем связать меня с другими ответами, связанными с этим, обратите внимание, что я прочитал их и все еще немного сбит с толку. Хорошо, здесь мы идем.

Поэтому я создаю веб-приложение в Django. Я импортирую новейшую библиотеку scrapy для сканирования веб-сайта. Я не использую сельдерей (я очень мало знаю об этом, но видел это в других темах, связанных с этим).

Один из URL нашего сайта, / crawl /, предназначен для запуска сканера. Это единственный URL на нашем сайте, который требует использования скрапа. Вот функция, которая вызывается при посещении URL:

def crawl(request):
  configure_logging({'LOG_FORMAT': '%(levelname)s: %(message)s'})
  runner = CrawlerRunner()

  d = runner.crawl(ReviewSpider)
  d.addBoth(lambda _: reactor.stop())
  reactor.run() # the script will block here until the crawling is finished

  return render(request, 'index.html')

Вы заметите, что это адаптация учебника по Scrapy на их сайте. При первом посещении этого URL-адреса, когда сервер начинает работать, все работает как задумано. Во второй раз и далее выдается исключение ReactorNotRestartable. Я понимаю, что это исключение происходит, когда реактору, который уже был остановлен, выдается команда на повторный запуск, что невозможно.

Глядя на пример кода, я бы предположил, что строка "runner = CrawlerRunner ()" будет возвращать новый реактор для использования каждый раз, когда посещается этот URL. Но я полагаю, что мое понимание скрученных реакторов не совсем понятно.

Как мне получить и запустить НОВЫЙ реактор при каждом посещении этого URL?

огромное спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос