解决Valine-Admin评论定时任务不能唤醒

发布时间:2020/06/19| 阅读:

前言

自从搭建博客只有就一直在使用Valine留言,Valine部署在Leancloud。然后免费版的 LeanCloud 容器,是有强制性休眠策略的,不能 24 小时运行它有以下规则:

  • 每天必须休眠 6 个小时
  • 30 分钟内没有外部请求,则休眠。
  • 休眠后如果有新的外部请求实例则马上启动(但激活时此次发送邮件会失败)。

也就是说如果LeanCloud容器在休眠的话第一次评论是接受不了的。之前的解决办法就是在Leancloud中添加定时任务来定时的进行唤醒。

但是最近很多人遇到「因流控原因,通过定时任务唤醒体验版实例失败,建议升级至标准版云引擎实例避免休眠」,难道已经不能白嫖了????下面是官方的说法。

解决办法

首先分析唤醒的机制,在容器休眠的时候我们只需要请求一下后台地址就可以对服务器进行唤醒,又以下几个解决方案:

  • 在评论之前添加一个请求将leancloud唤醒
  • 修改定时任务的唤醒时间治标不治本
  • 通过外部定时任务去进行请求

我这里采用的使用外部定时任务进行请求。

Bingo 我尝试了一下发现的确是可以的,也就是说我们现在只需要一个服务来代替Leancloud上面的定时任务就可以。

首先想到的就是用python写一个定时任务来定时的发起请求。但是这样感觉又略有的有一些麻烦,所以最后还是采用的crontab

crontab 命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。 该命令从标准输入设备读取指令,并将其存放crontab文件中,以供之后读取和执行。 该词来源于希腊语chronos(χρόνος),原意是时间。

通常,crontab储存的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

首先在linunx上面安装crontab

yum install crontabs

然后启动

service crond start

添加一个定时任务

crontab -r

然后把我们的定时任务添加进去,这个定时任务主要就是请求我们的后台地址。格式如下前面是cron表达式,表示每天7点到晚上23点每半个小时运行一次。后面就是用curl请求我们的唤醒地址。

添加完成之后重新reload一下

service crond reload

因为使用的是定时任务 所以这里是不能实时的看的所以我就去我的后台进行了一下截图。发现已经是正常的了,已经稳定运行好几天了。

如果你没有Linux服务器你就把你的后台地址放在下面的评论中,我会实时的添加到定时任务中。


📚相关文章