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

2023-12-20 18:39:29 +08:00
 callmejoejoe

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

2343 次点击
所在节点    Python
12 条回复
dragonfsky1
2023-12-20 19:17:48 +08:00
如果资源不足,让一个用户不满意好过让 50 个用户都不满意
knightdf
2023-12-20 19:37:35 +08:00
你这是牢饭管饱?
wbrobot
2023-12-20 20:09:48 +08:00
免费的不满意才会转成收费用户。。
xinmans
2023-12-20 23:00:34 +08:00
用 scrapyd 调度下即可,可以用 docker 来部署,或者直接 crontab 搞 50 个并发执行
em70
2023-12-20 23:13:09 +08:00
先把任务分解到最小单位,做一个爬虫池,顺序执行用户提交的任务队列里的任务,正在爬取就把任务状态改为正在处理,其他线程跳过正在处理任务,找一个未处理的执行,处理完继续下一个任务
jettzhang
2023-12-21 00:14:20 +08:00
遇到同样问题,求一个答案
sumi177
2023-12-21 00:34:29 +08:00
docker
Livid
2023-12-21 00:39:17 +08:00
sdsaaeee
2023-12-21 08:48:50 +08:00
python 协程,不要用 Scrapy 框架。这里面主要阻塞的就是 io 问题
persistencehoo
2023-12-21 10:18:32 +08:00
我会在这几方面着手:
1. Scrapy 做一个爬虫服务 - 只做采集
2. 任务推送系统(考虑 Scrapy 采集的并发量), 小批量推送数据采集,监听任务状态时未完成的
3. 处理采集数据,(改变任务状态,为已完成)
PiersSoCool
2023-12-21 14:19:00 +08:00
queue 就能解决吧,找个 rabbitmq 直接投递消费就好了
PiersSoCool
2023-12-21 14:19:53 +08:00
不行就参考操作系统关于进程资源调度的算法,找一个就行,一般也够了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1002058

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX