¿Cómo puedo hacer una ruptura de rastreo desechado y salir al encontrar la primera excepción?

Para fines de desarrollo, me gustaría detener toda la actividad de rastreo desechado tan pronto como ocurra una primera excepción (en una araña o en una tubería).

¿Algún consejo?

Desde 0.11, hay CLOSESPIDER_ERRORCOUNT :

Un entero que especifica el número máximo de errores que se deben recibir antes de cerrar la araña. Si la araña genera más de esa cantidad de errores, se cerrará por el motivo closespider_errorcount. Si es cero (o no está configurado), las arañas no se cerrarán por el número de errores.

Si se establece en 1 , la araña se cerrará en la primera excepción.

En Spider, solo puedes lanzar la excepción CloseSpider .

 def parse_page(self, response): if 'Bandwidth exceeded' in response.body: raise CloseSpider('bandwidth_exceeded') 

Para otros (middlewares, pipeline, etc.), puede llamar manualmente close_spider como se mencionó akhter.

Es puramente depende de su lógica de negocio. pero esto funcionará para ti

 crawler.engine.close_spider(self, 'log message') 

Lectura sugerida

Lectura sugerida

y la peor solución es

 import sys sys.exit("SHUT DOWN EVERYTHING!")