zoukankan      html  css  js  c++  java
  • pyspider操作千万级库,pyspider在对接量级较大库的策略

    pyspider操作千万级库,pyspider在对接量级较大库的策略

    如果是需要pyspider正常的流程去执行,那必然是会在on_strat()时任务执行超时,可能只读取出几万条或十几万条数据就会被破终止,然后执行index_page(),由于这个超时时间限制,且self.crawl()之后程序不是异步的,会暂时阻塞在on_start()这一步,若是异步的,可能情况会好点,但也可能会因为mysql读库太快,导致中间沉积大量任务,需要其他的思路去解决这个问题。

    pyspider脚本的设定是分布式的,所以不保证当前的Handler只有一个运行实例,使用其类间变量的结果是不确定的
    如果想要多个类(脚本)实例间共享一个变量,将其放到redis中或者采用其他策略
    具体方法是在redis中不断更新一个key,每次在on_start()中填充进去,到了on_finished()中先回写这些id,完成之后再清空其value,不断重复这个过程,能达到对接量级较大库的效果。

  • 相关阅读:
    springboot雷神更新
    JVM整理文档
    这是我见过BIO/NIO/AIO讲的最清楚的博客了
    redis主从机制
    mybatis是如何防止sql注入的
    分布式锁的实现方式简介
    Nginx简介
    .net 下的集合
    C#模拟百度登录
    WPF 将PPT,Word转成图片
  • 原文地址:https://www.cnblogs.com/zdz8207/p/python_learn_note_121.html
Copyright © 2011-2022 走看看