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

如何在Django中实现bot 24小时循环运行,避免主机终止进程?

问题原因说明

你收到的SIGTERM 15错误是Namecheap共享虚拟主机的内置资源管控机制触发的,这类平台会主动杀死连续运行超过时长阈值的长驻进程,避免单个用户占用过多公共资源,是共享主机的通用限制规则。

django-background-tasks适用性说明

该工具不支持你的需求。django-background-tasks的定位是处理异步短任务,本身需要常驻worker进程消费任务队列,这个worker进程同样会被主机监控杀死,且工具本身没有针对长驻服务的保活设计,无法实现bot24小时不间断运行。

可行解决方案

方案1:VPS场景下用systemd托管保活

如果你使用的是Namecheap的VPS/云主机而非共享虚拟主机,可直接通过systemd配置系统服务实现进程托管和自动重启:

  • 新建service配置文件/etc/systemd/system/robot.service,内容参考:
[Unit]
Description=24h Online Bot
After=network.target

[Service]
User=你的运行用户
WorkingDirectory=你的bot代码根目录
ExecStart=你的bot启动命令(例如python3 main.py)
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
  • 依次执行以下命令启动服务:
    • systemctl daemon-reload 重载系统服务配置
    • systemctl enable robot 设置服务开机自启
    • systemctl start robot 立即启动服务
      配置完成后,无论进程是被杀死还是主动崩溃,系统都会自动重新拉起。

方案2:共享主机场景下用定时任务探活

如果你只能使用共享虚拟主机,可通过定时任务实现进程快速恢复:

  • 编写进程探活脚本check_bot.sh:
#!/bin/bash
# 检测bot进程是否存在
if ! pgrep -f "你的bot启动命令关键词" > /dev/null
then
    cd 你的bot代码根目录
    # 后台启动bot,输出日志到log文件
    nohup 你的bot启动命令 > bot_run.log 2>&1 &
fi
  • 给脚本添加执行权限chmod +x check_bot.sh
  • 在主机的cron面板添加定时任务,设置每2分钟执行一次该脚本,进程被杀死后最多2分钟就会自动重启。

方案3:调整bot架构适配共享主机限制

如果你的bot是响应webhook事件的类型,可将长驻监听逻辑改造为接口触发模式,无需保持进程长期运行,有事件推送时才启动处理逻辑,从根源避免被主机判定为失控进程。

方案4:更换托管服务

如果以上方案都无法满足你的需求,建议更换为支持长驻进程的VPS、容器托管或者专门的bot托管服务,这类服务没有共享主机的进程时长限制,更适合24小时运行的服务场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:45:02