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
callmejoejoe
V2EX  ›  Python

多用户的爬虫服务,如何分配资源,确保每个用户的任务都能执行?

  •  1
     
  •   callmejoejoe ·
    callmejoejoe · 2023-12-20 18:39:29 +08:00 · 2316 次点击
    这是一个创建于 370 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想用 Scrapy 做一个爬虫服务帮用户爬取数据,比如有 50 个用户,每个用户都同时创建了爬取任务,如何分配资源,确保每个用户的任务都能执行? 问了一下 ChatGPT ,但好像没有解决我的疑问。所以来请教一下,感激不尽!

    12 条回复    2023-12-21 14:19:53 +08:00
    dragonfsky1
        1
    dragonfsky1  
       2023-12-20 19:17:48 +08:00   ❤️ 1
    如果资源不足,让一个用户不满意好过让 50 个用户都不满意
    knightdf
        2
    knightdf  
       2023-12-20 19:37:35 +08:00
    你这是牢饭管饱?
    wbrobot
        3
    wbrobot  
       2023-12-20 20:09:48 +08:00   ❤️ 3
    免费的不满意才会转成收费用户。。
    xinmans
        4
    xinmans  
       2023-12-20 23:00:34 +08:00
    用 scrapyd 调度下即可,可以用 docker 来部署,或者直接 crontab 搞 50 个并发执行
    em70
        5
    em70  
       2023-12-20 23:13:09 +08:00
    先把任务分解到最小单位,做一个爬虫池,顺序执行用户提交的任务队列里的任务,正在爬取就把任务状态改为正在处理,其他线程跳过正在处理任务,找一个未处理的执行,处理完继续下一个任务
    jettzhang
        6
    jettzhang  
       2023-12-21 00:14:20 +08:00
    遇到同样问题,求一个答案
    sumi177
        7
    sumi177  
       2023-12-21 00:34:29 +08:00
    docker
    Livid
        8
    Livid  
    MOD
       2023-12-21 00:39:17 +08:00   ❤️ 1
    sdsaaeee
        9
    sdsaaeee  
       2023-12-21 08:48:50 +08:00
    python 协程,不要用 Scrapy 框架。这里面主要阻塞的就是 io 问题
    persistencehoo
        10
    persistencehoo  
       2023-12-21 10:18:32 +08:00
    我会在这几方面着手:
    1. Scrapy 做一个爬虫服务 - 只做采集
    2. 任务推送系统(考虑 Scrapy 采集的并发量), 小批量推送数据采集,监听任务状态时未完成的
    3. 处理采集数据,(改变任务状态,为已完成)
    PiersSoCool
        11
    PiersSoCool  
       2023-12-21 14:19:00 +08:00
    queue 就能解决吧,找个 rabbitmq 直接投递消费就好了
    PiersSoCool
        12
    PiersSoCool  
       2023-12-21 14:19:53 +08:00
    不行就参考操作系统关于进程资源调度的算法,找一个就行,一般也够了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1135 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:33 · PVG 02:33 · LAX 10:33 · JFK 13:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.