1.引导
数据库pymysql的commit()和execute()在提交数据时,都是同步提交至数据库,由于scrapy框架数据的解析和异步是多线程的,所以scrapy的数据解析速度,要远高于数据写入数据库的速度。如果数据写入过慢,会造成数据库写入的阻塞,影响数据库写入的效率。
通过多线程异步的形式对数据进行写入,可以提高数据的写入速度。
使用twisted异步IO框架,可以实现数据的异步写入。
2.举例
pipelines.py
from pymysql import cursors
from twisted.enterprise import adbapi
class MySQLTwistedPipeline(object):
"""
将以下写在settings.py中
MYSQL_HOST = 'localhost'
MYSQL_DB = 'jobbole'
MYSQL_USER = 'root'
MYSQL_PASSWD = '123456'
MYSQL_CHARSET = 'utf8'
MYSQL_PORT = 3306
"""
def __init__(self, dbpool):
self.dbpool = dbpool
@classmethod
def from_settings(cls, settings):