Gtihub Action|一行命令解决 LeanCloud 流控问题

本文最后更新于:3 个月前

昨天看到 小康用 Github Action 执行 python 脚本来完成定时任务,大赞,我咋没想到!突然想起来 阮一峰:GitHub Actions 教程:定时发送天气邮件,所以随便也写了个 Github Action。

遇到的问题

本博客没太多留言,所以也没访问评论后台。但是今天发现博客中出现一个留言,但是没有邮件提醒。上 LeanCloud 看日志,发现 “因流控原因,通过定时任务唤醒体验版实例失败,建议升级至标准版云引擎实例避免休眠”

这…是暗示我要打钱嘛?!看了看价格,2元一天,咳咳,下次一定!👋

LeanCloud 的休眠策略有两个:

  • 每天必须休眠 6 小时。
  • 30 分钟内没有外部请求

所以在 LeanCloud 的云引擎内,设定了一个唤醒的定时任务。但是由于官方流控,导致定时任务无法唤醒,容器就此长眠,自然没办法邮件提醒了。

slef-wake-leancloud-1

思路

首先来想想,唤醒是什么?简单来说,就是访问服务器。

那好办,每隔半小时访问一下评论后台网站不就可以了。注意哦,是访问,不是登录,也不是写入数据。准确来说,就是 GET 请求 。那么一行命令就可以解决这个问题:curl https://xxxxxxxx

谁替我定时发送 GET 请求呢。(总不能手动输入网址访问😆)

答案就是 Github Action!教程如下,一共三步。

教程

本教程仅仅需要 8次点击,2 次输入。

第一步

fork 这个仓库:https://github.com/AimTao/leancloud-self-wake

slef-wake-leancloud-2png

第二步

设置你的 评论后台网站的地址,并开启 Github Action

这一步就是将你的 评论后台网站的地址 当作秘密存在这里。其中 Name 一定要是 SITE,因为 脚本里要用这个名字;Value 则为你的 评论后台网站的地址

slef-wake-leancloud-3

点击你的仓库上方的 Actions 选项,如下图,点击 I understand... 的按钮,确认在 Fork 的仓库上启用 GitHub Actions 。

slef-wake-leancloud-5

第三步

此处感谢 @qinxs 在评论中指出,Fork 的仓库上 GitHub Actions 的定时任务不会自动执行,必须要手动触发一次后才能正常工作。

所以 fork 之后,点击自己仓库右上角 starstar 你的仓库,这是为了触发 Github Action 第一次执行,之后就会自动执行定时任务。

设置完三步之后,在北京时间 7:00 - 23:59,每 29 分钟触发一次 Github Action,从而唤醒你的 评论后台网站。

可在 Aciton 中查看定时任务的执行记录:

slef-wake-leancloud-4

其他方案的选择

方案一

本文方案就是受小康此文的启发,不过没有使用 python 脚本,直接利用 curl 命令。

小康在 优雅解决 LeanCloud 流控问题 一文中介绍的方法:利用 Github Action 定时执行一个 python 脚本,并返回执行结果用来提交 commit。

这个方案可以说非常奈斯了,Github Action 完成一个定时任务在适合不过啦!

稍微有一点点不中意的地方:

  • 配置太多参数。
  • 一段时间,提交太多 commit。小康一个月以来,已经有 300+ 个 commit 了。

方案二

利用阿里云的云监控,监控你的 评论后台网站,也就是每隔半小时给网站发送一个请求。

缺点:没办法设置监控时间段为 7:00 - 23:59。

延伸

总之,要么用监控,要么找地方执行脚本。这么说来,iphone 的快捷指令也可以很好地解决这个问题。

说到底还是任务自动化处理问题,大家对自动化的需求随处可见,毕竟懒人推动世界的发展。这也应该才是越来越多的人都学 python 的原因吧。

最后,

如果你不了解 Github Aciton,可以看 阮一峰:GitHub Actions 教程:定时发送天气邮件

如果你不了解 curl,可以看 阮一峰:curl 的用法指南

拜了拜!👋


本博客所有文章均个人原创,除特别声明外均采用 CC BY-SA 4.0协议,转载请注明出处!

 目录

致敬李文亮及各路英雄好汉!