1
Latin 2020-07-01 16:27:32 +08:00 1
|
2
zzxy001 OP 还请大佬们指点迷津,百度了半天也没找到好的解决办法
|
3
scukmh 2020-07-01 16:32:29 +08:00
webhook 它不香嘛?
|
4
Ultraman 2020-07-01 16:33:06 +08:00 via Android
不负责任猜测哦,开个 git 仓库,本地改完推上去,服务端写个脚本定时往回拉然后关掉旧的开新的。虽然比较糙。
|
5
wysnylc 2020-07-01 16:36:27 +08:00
所有的项目最终都要考虑分布式
|
6
lenqu 2020-07-01 16:38:02 +08:00
容器化解决的就是这个问题,常规 k8s,简单 shell 脚本就能实现
|
7
zzxy001 OP 目前是这个问题,以后项目可能需要根据任务的不同动态启动不同的 selenium 爬虫程序,让每个服务器都不会空闲。
我属于小白一个,感谢大家。大家提的建议我都会去百度学习,看看能不能实现我想要的功能 |
9
MrTreasure 2020-07-01 16:44:44 +08:00
找一个 ssh 的库,写脚本,把你这些手动操作的步骤都写成脚本
|
10
zzxy001 OP @MrTreasure 是 shell 脚本可以完成这些步骤吗?
|
11
zzxy001 OP @MrTreasure 刚刚初步搜了一下,shell 脚本是 Linux 系统,window 可以用吗
|
12
la2la 2020-07-01 17:00:03 +08:00
使用工具是有成本的,如果服务器或者爬虫的数量不是特别多的话,可以写个脚本,在开发环境测试后,运行脚本把文件分配到服务器上,顺便重启。
|
13
raphael008 2020-07-01 17:06:31 +08:00
linux->ansible
windows->powershell |
14
matepi 2020-07-01 17:12:23 +08:00
搭 Git
爬虫的任务进程以外,再开个守护性进程。守护进程负责从 Git 上拉;拉完杀了重启任务进程 守护性进程还可以做些例行任务管控、查询任务进度之类的的动作,和爬虫执行任务进程解耦分离 守护进程挂到 windows 服务自启。 |
15
kalago 2020-07-01 17:13:15 +08:00
scrapyd 不能满足你这个需求吗?
|
16
Saurichthys 2020-07-01 17:32:47 +08:00
xx-job 维护就好了
|
17
luocjv 2020-07-01 17:33:09 +08:00 1
代码加版本控制推荐 git, 可以自己搭建 gitlab 或者用 github 之类的,然后改完代码用 webhook 触发多个服务器上的更新代码脚本并重启服务
|
18
wiken 2020-07-01 18:00:14 +08:00
git + webhook
|
19
tikazyq 2020-07-01 18:08:03 +08:00 via iPhone
|
21
gabon 2020-07-01 21:36:38 +08:00 via Android
任务调度平台
|
22
qsbaq 2020-07-01 21:50:38 +08:00
定时每分钟拉取 git 或者 svn 最新的代码
然后定期用脚本重启爬虫 |
23
ClericPy 2020-07-01 23:04:43 +08:00
最近正好也在整集群折腾 chrome 爬虫, 不过肯定不会用 selenium 这种过时的东西...
简单的说, linux 真的太香了, 一开始用的 VPS 是 windows Server 用的 rdp 一开始还觉得有界面挺好的, 安装软件也挺快的... 后来贴代码实在傻, 就又弄了几台 CentOS, 全程 fabric, 线上调试也是 tmux 太简单了, 关键内存利用率高多了 跑题了, 目前楼上们说的用 git 自动拉代码已经是成本比较低的了, 如果代码不敏感, 自己写个 api 远程下代码对比字符串变化重启服务的小脚本也不是没写过... |
24
jiejiss 2020-07-01 23:16:33 +08:00
写个新爬虫从你的服务器上爬取旧爬虫的源码,然后替换+重启 :D
(建议你用土法子是考虑到你很可能弄不来 webhook 。否则还是建议 webhook |
25
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 |
26
locoz 2020-07-01 23:33:23 +08:00 via Android 1
如果考虑到未来的扩展性和方便性,建议上容器化,但是系统最好是换成 Linux 。管理方面简单粗暴点就 docker 自带的那套集群方案,复杂点又想省资源就 k3s,可以结合脚本也可以直接对接 cicd 实现代码更新后自动更新所有服务器的程序。
|
27
opengps 2020-07-01 23:51:07 +08:00
搭建成内网共享同一个数据库。各自取数更新标识
|
28
wst 2020-07-02 00:34:07 +08:00 via Android
简单的分布式爬虫框架 Aragog
https://www.v2ex.com/t/683324 |
29
phobal 2020-07-02 08:40:15 +08:00 via iPhone
GitHub Action 、gitlab 自定义 webhook,或者写个 pipeline,方法不要太多
|
30
zzxy001 OP 这个社区的大神就是多,谢谢各位。根据大家的建议我搜索了关键词,找到了一个解决办法附带了 shell 脚本代码的,目前准备先试一试。当然 git 和 webhook 我也会试一试,学习一下新技术
|