scrapy twisted mysql_Scrapy+twisted 异步MySQL批量提交不报错

Scrapy+twisted 异步MySQL批量提交不报错

在正常情况下,默认1000个item执行一次插入,如果爬虫爬取结束,就将剩下的都插入

每1000个的插入如果出错,会报出来(跳到处理函数)

def process_item(self, item, spider):

if type(item) not in self.item_list.keys():

self.item_list[type(item)] = {"sql": item.get_insert_sql(), "items": []}

self.item_list[type(item)]["items"].append(item.get_insert_param())

if len(self.item_list[type(item)]["items"]) >= self.mysql_item_list_limit:

self.do_insert(deepcopy(self.item_list[type(item)]))

self.item_list[type(item)]["items"].clear()

return item

def do_insert(self, item_list, retrying=False):

query = self.dbpool.runInteraction(self.do_sql, item_list)

query.addCallback(self.handle_result, item_list)

query.addErrback(self.handle_error, item_list, retrying)

def do_sql(self, cursor, item):

cursor.executemany(item["sql"], item["items"])

def handle_result(self, result, item_list):

self.spider.logger.info('{} items inserted with retcode {}'.format(len(item_list["items"]), result))

def handle_error(self, failure, item_list, retrying):

self.spider.logger.error(failure, item_list)

在爬虫结束,调用pipline的close_spider函数,把剩下的插入,但是有错误不会报错

def close_spider(self, spider):

for items in self.item_list.values():

self.do_insert(items)

断点,一步步跟进去,驱动确实捕捉到了错误,但是没有跳到处理函数(两个都没有执行),

实际上在这里写个 1/0 都不会报错…

这怎么搞?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值