scrapy 如何在多个模块里共用一个数据库连接池
时间: 2020-08-18来源:V2EX
前景提要
有个 scrapy 项目整体流程大概是: spider.start_requests 从 redis 的 tasks_keys 里获取 url middleware.proxyMiddleware.process_request 从 redis 的 proxy_keys 里获取代理 spider.parse 解析出 item,需深度抓取的 url,深度抓取 url 放入 redis 的 tasks_keys 里 pipelines.MyItem 把解析出的 item 存入 redis 的 item_keys 里面 。。。。 总结来说,有 4 个地方需要用到同一个 redis 数据库,区别只在 key 目前的写法是, middleware.proxyMiddleware 里面__init__声明了 redis.ConnectionPool 连接池,以及 redis.StrictRedis 连接 在 pipelines.MyItem 和 spider 继承的类__init__里面全部粘贴复制了一遍。。。 一模一样的代码写了三个地方 虽然程序可以正常跑,但是,这方法越看越觉得傻 有什么方法可以只声明一个 redis 链接,然后在 spider 、middleware 、pipeline 复用同一个链接吗? 搜了一圈,各种出错,没有实际进展

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行