首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL选材中的瓶颈问题

MySQL选材中的瓶颈问题
EN

Stack Overflow用户
提问于 2017-05-03 13:34:41
回答 1查看 269关注 0票数 0

我已经测试过它的瓶颈是什么。它来自中间层的select查询。

代码语言:javascript
复制
class CheckDuplicatesFromDB(object):

 def process_request(self, request, spider):

    #  url_list is a just python list. some urls in there.
    if (request.url not in url_list):
        self.crawled_urls = dict()

        connection = pymysql.connect(host='123',
                                     user='123',
                                     password='1234',
                                     db='123',
                                     charset='utf8',
                                     cursorclass=pymysql.cursors.DictCursor)

        try:
            with connection.cursor() as cursor:
                # Read a single record

                sql = "SELECT `url` FROM `url` WHERE `url`=%s"
                cursor.execute(sql, request.url)
                self.crawled_urls = cursor.fetchone()

            connection.commit()
        finally:
            connection.close()

        if(self.crawled_urls is None):
            return None
        else:
            if (request.url == self.crawled_urls['url']):
                raise IgnoreRequest()
            else:
                return None
    else:
        return None

如果我在DOWNLOADER_MIDDLEWEARS中禁用setting.py,抓取速度也不错。

在残疾前:

scrapy.extensions.logstats]信息:爬行4页(0页/分钟),刮4项(2项/分钟)

残疾后:

scrapy.extensions.logstats信息:抓取55页( 55页/分钟),刮0项(0项/分钟)

我想select查询是问题所在。因此,我想选择一次查询并获取一个url数据来放置请求finger_prints

我正在使用CrawlerProcess:蜘蛛越多,爬行页面/分钟就越少。

示例:

  • 1只蜘蛛=> 50页/分钟
  • 2只蜘蛛=>共30页/分钟
  • 6只蜘蛛=>共10页/分钟

我想做的是:

  1. 从MySQL获取url数据
  2. 放置一个url数据以请求finger_prints

我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-04 12:07:00

一个主要的问题是,在每次响应/调用process_request时,都会打开到sql数据库的新连接。相反,只打开一次连接并保持其打开。

虽然这将导致一个重大的加速,我怀疑还有其他瓶颈,一旦这一问题得到解决。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43761650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档