Reactor no reiniciable: retorcido y rasposo

Antes de vincularme a otras respuestas relacionadas con esto, tenga en cuenta que las he leído y todavía estoy un poco confundido. Muy bien, aquí vamos.

Entonces estoy creando una aplicación web en Django. Estoy importando la biblioteca Scrapy más nueva para rastrear un sitio web. No estoy usando apio (sé muy poco al respecto, pero lo vi en otros temas relacionados con esto).

Una de las URL de nuestro sitio web, / crawl /, está destinada a iniciar la ejecución del rastreador. Es la única url en nuestro sitio que requiere el uso de scrapy. Aquí está la función que se llama cuando se visita la 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')

Notarás que esta es una adaptación del tutorial scrapy en su sitio web. La primera vez que se visita esta url cuando el servidor comienza a ejecutarse, todo funciona según lo previsto. La segunda vez y más, se produce una excepción ReactorNotRestartable. Entiendo que esta excepción ocurre cuando un reactor que ya se ha detenido recibe un comando para comenzar de nuevo, lo que no es posible.

Mirando el código de muestra, asumiría que la línea "runner = CrawlerRunner ()" devolvería un ~ nuevo ~ reactor para usar cada vez que se visite esta url. Pero creo que quizás mi comprensión de los reactores retorcidos no está completamente clara.

¿Cómo haría para obtener y ejecutar un NUEVO reactor cada vez que se visita esta url?

Muchas gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta