【发布时间】:2015-10-27 09:43:48
【问题描述】:
Scrapy 文档很好地解释了如何连接到MongoDB Pipeline Example 中的数据库。
如果我编写另一个也需要数据库访问的管道,我将需要创建另一个连接。如果我编写一个下载器中间件(在数据库中记录请求),那是另一个。数据库连接相当昂贵,感觉相当浪费。例如,SQL Alchemy 为此使用了一个连接池。
对于我的问题:有没有更好的方法来建立连接并在扩展、中间件和管道之间重新使用它? Scrapy 的异步特性和默认的 DBAPI2 是否存在任何问题(即:使用twisted.enterprise.adbapi 会更好/无用吗?
我考虑了一个类似于以下内容的扩展(假设通过信号进行正确的函数调用):
import MySQLdb
def __init__(self):
self.db = MySQLdb.connect('...')
def spider_opened(self, spider):
spider.db = self.db
def spider_closer(self, spider):
spider.db.close()
提前致谢。
【问题讨论】:
-
我也有同样的问题。运气好吗?
标签: python python-2.7 scrapy