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