请教一下如何对多个服务器上的爬虫进行管理

2020-07-01 16:25:30 +08:00
 zzxy001
我最近遇到一个问题。我用 python 写了一个 selenium 爬虫,自动处理一些任务。现在放在 4 个 windows 服务器上,
我更新爬虫文件都是用远程桌面连接,将新代码复制粘贴进去,然后关闭正在运行的爬虫程序,再打开新更换的。
现在还好,以后服务器多了,这样手动维护总感觉不太对劲。
请教一下有什么好的办法没有?如何能够自动更新代码并在更新后自动重启爬虫 python 程序?有什么工具可以使用吗?谢谢!
3608 次点击
所在节点    Python
30 条回复
gabon
2020-07-01 21:36:38 +08:00
任务调度平台
qsbaq
2020-07-01 21:50:38 +08:00
定时每分钟拉取 git 或者 svn 最新的代码
然后定期用脚本重启爬虫
ClericPy
2020-07-01 23:04:43 +08:00
最近正好也在整集群折腾 chrome 爬虫, 不过肯定不会用 selenium 这种过时的东西...

简单的说, linux 真的太香了, 一开始用的 VPS 是 windows Server 用的 rdp 一开始还觉得有界面挺好的, 安装软件也挺快的... 后来贴代码实在傻, 就又弄了几台 CentOS, 全程 fabric, 线上调试也是 tmux 太简单了, 关键内存利用率高多了

跑题了, 目前楼上们说的用 git 自动拉代码已经是成本比较低的了, 如果代码不敏感, 自己写个 api 远程下代码对比字符串变化重启服务的小脚本也不是没写过...
jiejiss
2020-07-01 23:16:33 +08:00
写个新爬虫从你的服务器上爬取旧爬虫的源码,然后替换+重启 :D

(建议你用土法子是考虑到你很可能弄不来 webhook 。否则还是建议 webhook
freakxx
2020-07-01 23:17:33 +08:00
如果不考虑其他比较好的办法,快速解决

> 将新代码复制粘贴进去,然后关闭正在运行的爬虫程序,再打开新更换的。

2 种方法,被动和主动

1.写个 script, 内容:git pull,restart ( kill pid,start );

2.1 被动:楼上说的,webhook,或者直接用 pipeline ;
2.2 主动:你直接写个脚本,每分钟自动 git pull 代码,pull 到代码就 restart
locoz
2020-07-01 23:33:23 +08:00
如果考虑到未来的扩展性和方便性,建议上容器化,但是系统最好是换成 Linux 。管理方面简单粗暴点就 docker 自带的那套集群方案,复杂点又想省资源就 k3s,可以结合脚本也可以直接对接 cicd 实现代码更新后自动更新所有服务器的程序。
opengps
2020-07-01 23:51:07 +08:00
搭建成内网共享同一个数据库。各自取数更新标识
wst
2020-07-02 00:34:07 +08:00
简单的分布式爬虫框架 Aragog
https://www.v2ex.com/t/683324
phobal
2020-07-02 08:40:15 +08:00
GitHub Action 、gitlab 自定义 webhook,或者写个 pipeline,方法不要太多
zzxy001
2020-07-02 09:26:38 +08:00
这个社区的大神就是多,谢谢各位。根据大家的建议我搜索了关键词,找到了一个解决办法附带了 shell 脚本代码的,目前准备先试一试。当然 git 和 webhook 我也会试一试,学习一下新技术

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

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

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

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

© 2021 V2EX