es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Excepciones silenciosas ocurren de manera inadvertida al usar CralwerRunner de Scrapy.

Estoy intentando usar CrawlerRunner para ejecutar una araña utilizando Scrapy de la siguiente manera:

a_crawler = CrawlerRunner(settings)

@defer.inlineCallbacks
def crawl():
    CódigoQueGeneraExcepción()
    print("Iniciando araña")
    yield a_crawler.crawl(MySpider)
    reactor.stop()

crawl()
reactor.run()

Extrañamente, la excepción generada por la primera línea de la función crawl no se imprime, no sucede nada y la aplicación se bloquea y no se detiene.
No puedo entender qué está sucediendo.
Cualquier sugerencia es bienvenida.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que la excepción generada por la primera línea de la función crawl() está siendo capturada en algún lugar antes de que pueda ser impresa. Una posible solución sería agregar un bloque try-except alrededor del código dentro de la función crawl() para capturar cualquier excepción que pueda ocurrir e imprimir un mensaje de error. Por ejemplo:

    @a_crawler.inlineCallbacks
    def crawl():
        try:
            CodeThatGenerateException()
        except Exception as e:
            print(f"Error: {str(e)}")
    
        print("Iniciando crawler")
        yield a_crawler.crawl(MySpider)
        reactor.stop()
    
    crawl()
    reactor.run()
    

    De esta manera, si se produce una excepción, esta será capturada y su mensaje será impreso antes de que el rastreador comience a ejecutarse. Además, asegúrese de que la función CodeThatGenerateException() realmente genere una excepción y de que la variable settings esté correctamente definida.

Comments are closed.