Closed AntonGsv closed 4 years ago
При попадании на errback не происходит ack/nack сообщения, ошибка из https://github.com/groupbwt/scrapy-boilerplate/issues/46#issuecomment-664037046. Мерж должен это исправить.
Минимальный пример для воссоздания ошибки (нужно добавить произвольное сообщение в errback_task для запуска). Без мержа паук зависает при получении ошибок в количестве CONCURRENT_REQUESTS.
import scrapy from rmq.items import RMQItem from rmq.pipelines import ItemProducerPipeline from rmq.spiders import TaskToSingleResultSpider from rmq.utils import get_import_full_name from rmq.utils.decorators import rmq_callback, rmq_errback class ErrbackSpider(TaskToSingleResultSpider): name = 'errback' custom_settings = { 'LOG_LEVEL': 'DEBUG', 'DOWNLOAD_TIMEOUT': 0.001, 'RETRY_TIMES': 2, "ITEM_PIPELINES": { get_import_full_name(ItemProducerPipeline): 310, }, } def start_requests(self): yield from () def __init__(self, *args, **kwargs): super(ErrbackSpider, self).__init__(*args, **kwargs) self.task_queue_name = 'errback_task' self.result_queue_name = 'errback_result' def next_request(self, _delivery_tag: int, msg_body: bytes): return scrapy.Request( 'https://httpstat.us/200', callback=self.parse, dont_filter=True, errback=self.errback, ) @rmq_callback def parse(self, response): yield RMQItem() self.logger.info('parse') @rmq_errback def errback(self, failure): yield RMQItem() yield RMQItem() self.logger.info('errback')
@KristobalJunta прими пожалуйста мерж
При попадании на errback не происходит ack/nack сообщения, ошибка из https://github.com/groupbwt/scrapy-boilerplate/issues/46#issuecomment-664037046. Мерж должен это исправить.
Минимальный пример для воссоздания ошибки (нужно добавить произвольное сообщение в errback_task для запуска). Без мержа паук зависает при получении ошибок в количестве CONCURRENT_REQUESTS.