服务器部署爬虫:Supervisor 进程守护

在服务器长期运行爬虫时,常会遇到程序意外崩溃、断连退出、后台挂起失效等问题,直接用 nohup 或 screen 管理不够规范、不够稳定。Supervisor 是 Linux 下轻量、可靠的进程守护工具,专门用来托管爬虫、服务、脚本等后台程序,实现自动重启、日志管理、统一管控。

一、Supervisor 是什么

Supervisor 是用 Python 开发的进程管理系统,核心作用:

  • 让程序在后台稳定运行
  • 程序崩溃自动重启
  • 集中管理启动、停止、重启、查看状态
  • 统一管理标准输出与错误日志非常适合爬虫、API 服务、定时任务等长期驻留进程。

二、安装 Supervisor

以 CentOS / Ubuntu 为例:

CentOS/RHEL

bash

运行

复制代码
yum install -y epel-release
yum install -y supervisor

Ubuntu/Debian

bash

运行

复制代码
apt update
apt install -y supervisor

安装完成后,启动并设置开机自启:

bash

运行

复制代码
systemctl start supervisord
systemctl enable supervisord

检查是否运行:

bash

运行

复制代码
ps aux | grep supervisord

三、编写爬虫脚本(示例)

假设你的爬虫文件:/home/spider/main.py

python

运行

复制代码
import time
import datetime

while True:
    print(f"[{datetime.datetime.now()}] 爬虫正在运行...")
    # 这里写你的爬取逻辑
    time.sleep(10)

确保爬虫能直接在命令行正常运行:

bash

运行

复制代码
python3 /home/spider/main.py

四、配置 Supervisor 托管爬虫

Supervisor 配置目录通常为:

  • /etc/supervisord.d/

新建配置文件,建议以 .ini 结尾:

bash

运行

复制代码
vim /etc/supervisord.d/spider.ini

写入如下配置(可直接复制修改路径使用):

ini

复制代码
[program:spider]
command=python3 /home/spider/main.py
directory=/home/spider
user=root
autostart=true
autorestart=true
startretries=3
stdout_logfile=/var/log/spider.log
stderr_logfile=/var/log/spider_err.log

配置说明

  • [program:spider]:进程名称,自定义
  • command:启动命令
  • directory:工作目录
  • autostart=true:服务器开机自动启动
  • autorestart=true:程序崩溃自动重启
  • stdout_logfile:正常日志
  • stderr_logfile:错误日志

五、更新配置并管理爬虫

  1. 重新加载配置

bash

运行

复制代码
supervisorctl reread
supervisorctl update
  1. 启动爬虫

bash

运行

复制代码
supervisorctl start spider
  1. 查看状态

bash

运行

复制代码
supervisorctl status
  1. 常用命令

bash

运行

复制代码
supervisorctl stop spider      # 停止
supervisorctl restart spider   # 重启
supervisorctl reload           # 重载所有配置

六、查看日志(排查爬虫问题)

实时查看爬虫日志:

bash

运行

复制代码
tail -f /var/log/spider.log

查看错误日志:

bash

运行

复制代码
tail -f /var/log/spider_err.log

日志能帮你快速定位:

  • 爬虫崩溃原因
  • 网络超时
  • 解析错误
  • 权限问题

七、为什么推荐 Supervisor 托管爬虫

  • 稳定:崩溃自动重启,避免爬一半中断
  • 统一管理:一台服务器可管理 N 个爬虫,互不干扰
  • 日志规范:方便排查线上问题
  • 轻量无依赖:比 systemd 更简单、比 screen 更专业
  • 适合长期运行:爬虫 7×24 小时稳定在线

八、常见问题

  1. 报错:spider: ERROR (spawn error)

    • 检查 Python 路径是否正确
    • 检查日志文件权限
    • 手动执行 command 命令看是否能运行
  2. 程序一直重启

    • 代码有异常,看 stderr 日志
    • 爬虫执行完就退出,不是死循环程序不适合托管
  3. 修改代码后不生效

    • 必须 restart 进程:

    bash

    运行

    复制代码
    supervisorctl restart spider

总结

服务器部署爬虫,Supervisor 是标配进程守护方案。只要三步:安装 → 写配置 → 启动托管,就能让爬虫稳定、安全、自动运行,彻底解决后台掉线、崩溃、无日志等问题。

相关推荐
wewowilling3 分钟前
Coze智能体入门 --- AI Agent开发入门--第一章
python·低代码·agent·零代码·coze
Wx-bishekaifayuan7 分钟前
springboot公考微信小程序35511-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
小猴子爱上树15 分钟前
跨马翻译:批量图片翻译+视频字幕+智能抠图,一站式跨境电商翻译工具
python·音视频
溪语流沙17 分钟前
【Web全栈进阶】OAuth实战——GitHub第三方登录
前端·python·github
计算机编程指导师20 分钟前
【计算机毕设选题】基于Hadoop的全球企业邮件安全合规数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·毕业设计·课程设计·企业邮件
SimonKing27 分钟前
零大模型依赖!SQLite FTS5 + jieba 打造纯本地知识库搜索
后端·python·程序员
慢云智慧空间28 分钟前
从智能终端到空间AI,慢云科技如何重新定义智慧人居?
人工智能·python·科技
yi01138 分钟前
LeetCode 3. 无重复字符的最长子串|不定长滑动窗口:什么时候更新最大值?
笔记·python·算法·leetcode·双指针·滑动窗口
2601_962885721 小时前
如何用 Python 计算索提诺比率和卡玛比率?
开发语言·python
小小张说故事1 小时前
Python 的描述符到底是个啥?property 和 classmethod 底层都靠它,3 个例子讲透
python