V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Nick2VIPUser
V2EX  ›  Python

一直使用 Redis 作爬虫的任务队列,请问各位 V 友还有哪些其他选择吗?

  •  
  •   Nick2VIPUser ·
    nickliqian · 2018-05-17 17:32:24 +08:00 · 4776 次点击
    这是一个创建于 2382 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 redis 操作简单,能承受的并发大,写入和读取都很快。
    想问问各位 V 友还有什么其他的类似技术、工具有在爬虫中使用的吗?
    欢迎交流学习~

    12 条回复    2018-05-18 11:19:33 +08:00
    gabon
        1
    gabon  
       2018-05-17 18:36:22 +08:00 via Android
    用 netty 写一个调度器。
    golmic
        2
    golmic  
       2018-05-17 18:38:45 +08:00
    kafka
    sunwei0325
        3
    sunwei0325  
       2018-05-17 18:53:06 +08:00
    scrapy 官方开源的分布式爬虫 frontera 了解一下
    https://github.com/scrapinghub/frontera
    wzwwzw
        4
    wzwwzw  
       2018-05-17 21:24:24 +08:00
    rabbitmq
    whatsmyip
        5
    whatsmyip  
       2018-05-17 22:31:38 +08:00
    消息队列 +1

    redis 速度很快,但是容量太小了
    feverzsj
        6
    feverzsj  
       2018-05-17 23:34:58 +08:00
    redis 或者数据库做任务队列的最大优势是支持事务性,如果不需要事务性,那用 nats 之类的消息队列更简单
    woscaizi
        7
    woscaizi  
       2018-05-17 23:59:16 +08:00 via iPhone
    消息队列
    galaxyyao
        8
    galaxyyao  
       2018-05-18 00:03:32 +08:00 via iPhone
    @whatsmyip 爬虫任务队列每条最多也就几 k 了吧。按一条 10k 来算,就算是只有 8G 内存的服务器,至少也可以存 60w 条任务,一秒爬 1 条都可以爬足足 7 天了
    kimown
        9
    kimown  
       2018-05-18 08:38:23 +08:00 via Android
    redis 他爸写了个 disque,会合并到 redis4.2 里面
    whatsmyip
        10
    whatsmyip  
       2018-05-18 09:43:29 +08:00
    @galaxyyao 爬不了 7 天。我用 100 并发,千兆带宽爬教育网内数据,基本一两天就写满了 6G 的内存。而且 redis 一旦达到一定的内存使用量,就会开始不停的进行写入磁盘操作,CPU 占满,读写速度骤减。要控制队列的量也不是一个简单的事情
    Nick2VIPUser
        11
    Nick2VIPUser  
    OP
       2018-05-18 09:55:01 +08:00
    @whatsmyip 另开一个线程定时定量把 redis 中的数据取出来持久化到其他硬盘数据库(如 MySQL ),减轻 Redis 压力
    julyclyde
        12
    julyclyde  
       2018-05-18 11:19:33 +08:00
    用 kafka 的基本上属于分不清 pubsub 和 messaging 模式
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1268 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:01 · PVG 02:01 · LAX 10:01 · JFK 13:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.