前言

由于本博客采用的是 Valine 这一个评论系统,这个评论系统后端完全依赖 Leancloud。最近 Leancloud 对开发版实例自动唤醒采取了流控措施,导致无法通过定时任务唤醒,这样会导致邮件提醒不及时。以下是官方的回应。

如果还没设置 Valine 邮件提醒功能的可参考以下文章:

Valine配置评论提醒服务

解决办法

首先看一下 Leancloud休眠策略

  • 如果应用最近一段时间(半小时)没有任何外部请求,则休眠。
  • 休眠后如果有新的外部请求实例则马上启动。访问者的体验是第一个请求响应时间是 5 ~ 30 秒(视实例启动时间而定),后续访问响应速度恢复正常。
  • 强制休眠:如果最近 24 小时内累计运行超过 18 小时,则强制休眠。此时新的请求会收到 503 的错误响应码,该错误可在 云引擎 > 统计 中查看。

根据他这个休眠策略,可以没30分钟访问一次实例,就可以解决了。

GitHub 提供了 Action 服务,所以可以使用 Action 实现定时唤醒。

方法步骤:

  • 首先 fork 一份我的代码:https://github.com/imgyh/Wake_Leancloud

  • 修改 main.py 里面的 get_status("https://valine.0941314.xyz/") 改成你自己的 Valine 评论后台管理地址

  • 之后他就会在北京时间的 7-23 点,每隔25min执行一次 main.py 来唤醒一次 Valine 的实例。

实现原理

实现原理很简单,就用了 pythonrequests 库,几行代码就搞定了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import requests

def get_status(url):

r=requests.get(url=url)

return r.status_code

def main():
status=get_status("https://valine.0941314.xyz/") #修改为自己的valine评论地址

if status==200:
print("激活成功!HTTP状态码为:",status)
else:
print("激活失败!HTTP状态码为:",status)

if __name__ == "__main__":
main()

由于自己使用,这已经完全能满足了。