想用 Scrapy 做一个爬虫服务帮用户爬取数据,比如有 50 个用户,每个用户都同时创建了爬取任务,如何分配资源,确保每个用户的任务都能执行? 问了一下 ChatGPT ,但好像没有解决我的疑问。所以来请教一下,感激不尽!
1 dragonfsky1 2023-12-20 19:17:48 +08:00 ![]() 如果资源不足,让一个用户不满意好过让 50 个用户都不满意 |
![]() | 2 knightdf 2023-12-20 19:37:35 +08:00 你这是牢饭管饱? |
![]() | 3 wbrobot 2023-12-20 20:09:48 +08:00 ![]() 免费的不满意才会转成收费用户。。 |
![]() | 4 yb8Qes1Qae01H0xy 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 PRO ![]() |
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 不行就参考操作系统关于进程资源调度的算法,找一个就行,一般也够了 |