admin管理员组

文章数量:1530842

GithubAction的Schedule运行不准时的解决办法

  • 前言
    • 在GitHubAPI中Schedule的定义
    • 定时执行的理论基础
      • 如何开启GitHubAction的`workflow_dispatch`触发器
    • 使用云函数提供cron调度服务
  • 总结

前言

最近做一个微型项目,因为需要爬取的部分数据在国内网络受限,所以用到了GithubActions功能。
设定的 scheduleUCT时间的08:00(也就是北京时间的16:00),但实际运行的时间为北京时间17:00 至 17:20 不等。
本篇文章将介绍此现象的原因,并提供一种简单解决方法。

在GitHubAPI中Schedule的定义

Scheduled events(预定事件)
The Schedule event allows you to trigger a workflow at a scheduled time.(该Schedule事件允许您在预定时间触发工作流。)

Note: The Schedule event can be delayed during periods of high loads of GitHub Actions workflow runs. High load times include the start of every hour. To decrease the chance of delay, schedule your workflow to run at a different time of the hour.

注意:Schedule在 GitHub 操作工作流运行的高负载期间,事件可能会延迟。高负载时间包括每小时开始。为了减少延迟的可能性,请安排您的工作流在不同的时间运行。

根据定义中描述的内容,我们可以得知Schedule是存在延迟的,实测延迟的时间为几十分钟,或者超过一个小时,甚至在某种极端情况下,将不会执行。
Schedule 设置的 cron 时刻,仅仅是工作流进行计划排队的时刻,而不是准确的运行时刻。
这在某些需求中将是一种致命的不精准。
接下来,我将提供一种解决方案,用于实现Github Action工作流的定时准时执行。

定时执行的理论基础

GitHub Actions

本文标签: 解决办法准时GithubActionschedule