Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.3k views
in Technique[技术] by (71.8m points)

将爬虫部署到云服务器后,如何监控爬虫进度?

将爬虫部署到云服务器中,如何监控爬虫进度?

在校学生,每天晚上会断网,有时候需要爬取大量数据,断网就很烦,所以想到了把爬虫部署到云端服务器。所以通过学生优惠买了一个腾讯云。系统为 centos7

但是发现了一个问题,找了半天也没有结果特来提问,通过ssh连接云服务器后,跑起程序后如果断开ssh,程序会自己中断。

经过搜索发现,可以使用nohub命令,来解决这个问题,但是又出现到新的问题,我没法监控到程序的进度。因为平时我会通过print到终端来查看具体的进度。但是通过这种方式没法看到实时的结果。

只有等到程序跑完才会将结果输出的nohub.out,而且如果退出ssh连接,重新连接后也不知怎么停止程序。

期望回答的问题

  • 有没有什么办法可以断开ssh后重新连接的时候保持上次的用户状态?

    • 例如:终端正在不停输出1234……,退出ssh连接后重连可以继续看到输出的进度
    • 或者形式可以监控到程序到进度,并可以自行进行终断等操作
  • 或者有什么更好到方式可以解决问题?

    • 不要求本地一直保持网络通常
    • 云服务器跑着爬虫程序
    • 有需要时可以随时查看爬虫进度
    • 可以随时控制程序终断或启动

关于nohup补充一个图例

image.png


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

先说一问题,如果你输出到终端, 比如 nohup python a.py 2>&1 >/tmp/a.out & 这种启动方式,你去看 /tmp/a.out 啊,看啥 nohup.out 啊.. 另外,想终止进程你就 ps -ef | grep a.py 拿到 pid 之后就 kill 掉呗.

不太了解使用的爬虫框架是啥哈,但是我觉得吧,想解决你这个问题不是很难.起一个 web 服务,起一个消息队列或者别的存储方案都可以,爬虫进程只管关注消息队列或者存储里的任务,有任务就去爬,没有任务就休眠,web 服务只管去操作和监控这个消息队或者存储,以及爬虫的开关即可.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...