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

如何实现Discord.py开发的Client程序常驻持续运行

Discord.py 自定义客户端永久运行实现方案

核心要实现三个目标:脱离手动终端启动、进程异常退出自动重启、设备开机后自动拉起服务,以下是按稳定性优先级排序的可落地方案:

方案1:系统原生进程守护(稳定性最高,生产环境首选)

不需要额外安装第三方服务,靠操作系统自带的服务管理能力实现常驻,不同操作系统对应实现方式如下:

  • Linux(绝大多数发行版适用):Systemd 服务配置
    1. 新建服务配置文件/etc/systemd/system/discord-bot.service,写入以下配置,替换其中的用户名、项目路径、Python路径为你自己的实际值:
    [Unit]
    Description=Custom Discord.py Client
    After=network.target
    
    [Service]
    User=your_non_root_username
    WorkingDirectory=/path/to/your/bot/project
    ExecStart=/usr/bin/python3 /path/to/your/bot/entry_file.py
    Restart=always
    RestartSec=5
    Environment=PYTHONUNBUFFERED=1
    
    [Install]
    WantedBy=multi-user.target
    
    注意不要用root用户运行bot,单独创建低权限用户跑服务避免安全风险
    2. 依次执行以下命令加载配置、设置开机自启、启动服务:
    systemctl daemon-reload
    systemctl enable discord-bot
    systemctl start discord-bot
    
    1. 日常运维可以用systemctl status discord-bot看运行状态,journalctl -u discord-bot -f看实时运行日志,服务崩溃、设备重启后都会自动在5秒内重新拉起。
  • Windows 系统:NSSM 封装系统服务
    下载NSSM工具后,执行nssm install discord-bot打开配置面板,选择本地python.exe路径,启动参数填你的bot入口文件路径,指定项目工作目录,在「恢复」选项卡设置第一次、第二次、后续失败都自动重启服务,最后安装服务即可,支持开机自启、崩溃自动拉取。
  • MacOS 系统:launchd 配置
    编写对应plist配置文件放到/Library/LaunchDaemons目录下,配置运行路径、工作目录、重启策略,加载后即可实现开机自启+异常重启。

方案2:容器化部署(适合跨环境、多服务统一管理场景)

编写Dockerfile把bot代码、依赖打包成镜像,启动容器时添加--restart=always参数,只要把Docker服务本身设置为开机自启,宿主机重启、bot进程崩溃时Docker都会自动重新启动容器。注意容器启动时要让bot进程在前台运行,不要加后台启动参数导致容器判定运行结束直接退出。

方案3:第三方进程管理工具(适合新手、临时部署场景)

如果不想修改系统级配置,可以用跨平台进程管理工具PM2实现常驻,全系统通用:

  1. 先安装Node.js环境,再通过npm全局安装PM2
  2. 在bot项目目录下执行启动命令:
pm2 start your_bot_entry.py --interpreter python3 --name discord-bot
  1. 执行pm2 save保存当前运行的进程列表,再执行pm2 startup按照提示生成开机自启配置即可。
    PM2会自动监控进程状态,崩溃后立刻重启,自带日志查看、资源占用监控功能,操作门槛低。

不推荐用nohup、screen、tmux这类工具挂后台,这类工具只能实现终端退出后进程不停止,没有异常自动重启机制,进程崩溃后会直接中断服务,达不到永久运行的要求。

运行优化注意事项

  • 代码层面添加全局异常捕获,监听on_error事件记录错误日志,避免单个事件处理逻辑报错直接拖垮整个主进程
  • 如果用家用设备部署,记得关闭系统自动休眠、自动关机策略,保证网络稳定
  • 定期查看运行日志,排查频繁崩溃的根因,不要完全依赖守护进程强制重启
  • 如果部署在国内网络环境,提前确认服务器到Discord API的连通性,避免因为网络问题导致持续断连无法响应事件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:21:35