在 Google App Engine 上托管的每 14 分钟出现一次不和谐机器人错误 (500)

Posted

技术标签:

【中文标题】在 Google App Engine 上托管的每 14 分钟出现一次不和谐机器人错误 (500)【英文标题】:discord bot errors (500) every 14 min being hosted on Google App Engine 【发布时间】:2021-11-24 08:40:15 【问题描述】:

我有一个托管在 Google App Engine 上的不和谐机器人。它会工作并运行,然后大约每 14 分钟,机器人就会离线,我会看到以下错误:

进一步查看错误日志后,输出如下:

logMessage:“此请求导致为您的应用程序启动一个新进程,从而导致您的应用程序代码首次加载。因此,此请求可能比您的应用程序的典型请求花费更长的时间并使用更多的 CPU 。” 严重性:“信息” 时间:“2021-10-03T16:29:18.831860Z”

1: logMessage:“预热请求失败。请检查您的预热处理程序实施并确保其正常工作。” 严重性:“信息” 时间:“2021-10-03T16:29:18.831862Z”

2: logMessage:“进程终止,因为它未能以 HTTP 状态代码 200-299 或 404 响应启动请求。” 严重性:“错误” 时间:“2021-10-03T16:29:18.831863Z”

我的app.yaml文件如下:

runtime: python38

instance_class: B1

manual_scaling:
  instances: 1

entrypoint: python3 bot.py

我对 GCP 和托管网络服务还很陌生,所以我很迷茫。非常感谢这里的任何帮助。

【问题讨论】:

【参考方案1】:

您需要为/_ah/start 提供一个url 处理程序。 (也可以提供/_ah/stop/_ah/warmup)。这些是 GAE 将启动和停止您的应用程序的调用。他们应该返回200 的http 响应。以下是 Flask 中的示例:

@app.route('/_ah/start')
@app.route('/_ah/stop')
@app.route('/_ah/warmup')
def warmup():
    # Handle your warmup logic here, e.g. set up a database connection pool
    return '', 200, 

编辑:有效回复为200299404

【讨论】:

配置说它使用B1实例类,我认为它不需要再次预热。 请原谅我的天真,这是否意味着在我的不和谐 bot.py 代码中,我也必须包含烧瓶? “热身逻辑”中会包括什么? 没有。这只是意味着您需要一个 url 处理程序,只要 GAE 访问这些 url,它将提供 200。 所以我不一定需要包含任何“热身逻辑”,我需要做的就是返回 200? 你可以尝试创建一个到请求库的硬链接:cloud.google.com/error-reporting/docs/quickstart这个链接有用吗?

以上是关于在 Google App Engine 上托管的每 14 分钟出现一次不和谐机器人错误 (500)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google App Engine 上托管静态 HTML 文件?

要在 Google App Engine 上托管静态 (HTML) 网站,app.yaml 文件中应该包含啥内容?

我在哪里可以看到Google App Engine中的日志?

将 appid.appspot.com 重定向到应用引擎上托管的 Django App 的自定义域的最佳方法

如何为 AWS EC2 上托管的 Parse 服务器获取 APP_ID 和 CLIENT_KEY

如果我们将 App Engine 配置为自动缩放,它会自动进行负载平衡吗?