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

GitHub Workflows运行崩溃后是否可以设置自动重启?

错误说明

你收到的exit code 139对应Linux系统的段错误(SIGSEGV),一般是机器人调用的语音播放相关底层依赖(比如ffmpeg、pytgcalls等C扩展库)出现内存访问异常导致的进程崩溃。

自动重启实现方案

方案1:工作流步骤内嵌Shell循环(最简便,无需修改业务代码)

直接修改你的工作流yaml文件中运行机器人的步骤,用无限Shell循环包裹启动命令,只要进程退出就自动重启:

- name: 启动Telegram音乐机器人(崩溃自动重启)
  run: |
    # 无限循环,进程退出就自动重启
    while true; do
      python3 nani.py
      # 打印退出日志,可根据需要调整重启等待时间
      echo "进程异常退出,退出码:$?,3秒后自动重启"
      sleep 3
    done

方案2:工作流全局自动重试

如果需要整个工作流失败后自动重新运行,可以在工作流配置中添加失败重跑逻辑,配置如下:

# 工作流根层级配置
on:
  push:
    branches: [ main ]
  workflow_run:
    workflows: ["你的当前工作流名称"]
    types:
      - completed

jobs:
  rerun-failed-workflow:
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'failure' }}
    steps:
      - uses: actions/checkout@v4
      - name: 重跑失败的工作流
        uses: actions/github-script@v7
        with:
          script: |
            await github.rest.actions.reRunWorkflowFailedJobs({
              owner: context.repo.owner,
              repo: context.repo.repo,
              run_id: context.payload.workflow_run.id,
            })

注意事项

  • 你遇到的段错误属于C扩展层面的崩溃,Python原生的try-except无法拦截,不建议用Python内部异常捕获做重启逻辑
  • GitHub公共运行器单次工作流最大运行时长为6小时,到期会被系统强制终止,如果你需要7*24小时不间断服务,建议使用独立VPS托管机器人

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:09:04