You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

7×24小时不间断运行Node.js与Python配套程序的实现方案

可行性结论

这个需求完全可实现,核心要解决三个问题:进程异常自动重启、启动顺序保证(Python爬虫优先启动就绪后再运行Node脚本)、chromedriver相关的爬虫运行稳定性。

具体操作步骤

1. 前置环境校验

先在本地/服务器上跑通完整流程,排除基础问题:

  • 确认Python爬虫的所有依赖(如selenium、requests等)都全局安装或在虚拟环境中配置完成,chromedriver版本必须和本地Chrome/Chromium版本完全匹配,否则会启动失败,给chromedriver加执行权限:chmod +x /path/to/chromedriver
  • 确认Node项目的依赖已完成安装:npm install,手动按「启动Python爬虫→等待爬虫服务就绪→启动Node脚本」的顺序运行完整流程,确认没有路径依赖、权限不足等问题。

2. 进程托管方案(二选一即可)

方案1:Linux系统自带systemd(服务器场景首选)

无需额外安装工具,原生支持启动顺序控制、异常自动重启、开机自启:

  • 第一步编写Python爬虫的service配置文件,路径为/etc/systemd/system/spider.service,示例内容如下:
[Unit]
Description=Python Spider Service
After=network.target

[Service]
User=普通运行用户名(不要填root)
WorkingDirectory=/path/to/your/python/project
# 用虚拟环境的话替换为虚拟环境的python路径,比如/opt/venv/bin/python
ExecStart=/usr/bin/python3 /path/to/your/spider.py
Restart=always
RestartSec=1
Environment=PATH=/usr/local/bin:/path/to/chromedriver目录:$PATH

[Install]
WantedBy=multi-user.target
  • 第二步编写Node项目的service配置文件,路径为/etc/systemd/system/node-calc.service,配置依赖爬虫服务优先启动:
[Unit]
Description=Node Calculation Service
After=spider.service
Requires=spider.service

[Service]
User=普通运行用户名(不要填root)
WorkingDirectory=/path/to/your/node/project
ExecStart=/usr/bin/node /path/to/your/index.js
Restart=always
RestartSec=1
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
  • 执行命令生效配置:
# 重载systemd配置
systemctl daemon-reload
# 开启开机自启
systemctl enable spider.service node-calc.service
# 启动两个服务
systemctl start spider.service node-calc.service
  • 查看实时日志命令:journalctl -u 服务名 -f。

方案2:PM2托管(跨平台,Windows/Linux/macOS通用)

适合需要跨平台运行的场景,需先全局安装PM2:npm install -g pm2

  • 编写PM2配置文件ecosystem.config.js,配置启动顺序和重启策略:
module.exports = {
  apps : [
    {
      name: "spider",
      script: "/path/to/your/spider.py",
      interpreter: "/usr/bin/python3", // 虚拟环境替换为对应python路径
      cwd: "/path/to/your/python/project",
      autorestart: true,
      restart_delay: 1000,
      env: {
        PATH: "/path/to/chromedriver目录:" + process.env.PATH
      }
    },
    {
      name: "node-calc",
      script: "index.js",
      cwd: "/path/to/your/node/project",
      autorestart: true,
      restart_delay: 1000,
      // 延迟3秒启动,保证爬虫服务已就绪
      start_delay: 3000,
      env: {
        NODE_ENV: "production"
      }
    }
  ]
}
  • 启动命令:pm2 start ecosystem.config.js
  • 开启开机自启:执行pm2 startup后按提示复制输出的命令运行,再执行pm2 save保存当前进程列表。
  • 查看日志命令:pm2 logs 进程名,查看进程状态命令:pm2 status。

3. 爬虫稳定性优化

基于chromedriver的爬虫容易出现内存泄漏、进程僵死问题,需做额外保障:

  • 爬虫代码中添加全链路异常捕获,每次爬取任务完成后主动销毁无用的浏览器实例,避免内存溢出。
  • 配置定时重启策略:用systemd的话可以写cron任务每天凌晨低峰期重启两个服务;用PM2的话可以直接在对应进程配置中加cron_restart: "0 0 * * *"实现每天零点自动重启。
  • 可在爬虫中加简单的健康检查接口,配套简单的监控脚本,发现接口无响应时自动重启爬虫服务。

4. 额外稳定性保障

  • 服务器开启交换分区,避免内存不足时进程被系统直接杀掉。
  • 定期清理爬虫产生的临时文件、缓存,避免磁盘占满导致服务崩溃。
  • 不要用root用户运行服务,使用普通权限用户运行即可,降低安全风险。

内容的提问来源于stack exchange,提问作者luis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:36:06