1

所以我的用例是这样的,我最好在 app.yaml 中使用 min_instance 为零,但让一个实例始终为默认版本运行。

因此,为了做到这一点,我安排了一个 cron 作业在每 14 分钟后点击 _ah/warmup,因为实例在 15 分钟无活动后关闭。

现在我无法理解的是,当 cron 作业运行时,它会失败并且在日志中显示 301。而这是我的预热处理程序的代码。

def warmup(request):
 
    return JsonResponse(data={})

它不应该返回 200 吗?我还注意到,即使它是重定向,目标也正在实现。实例不会关闭。但我只是好奇它为什么会重定向?

4

1 回答 1

2

Cron 作业和 _ah/ URL 最终被 App Engine 称为非 HTTPS 请求。强行如此:)

如果您通过服务器/框架强制使用 SSL,那么您正在进入重定向循环。因此 App Engine 将使用非 HTTPS 调用它,您的服务器/框架将尝试将其“升级”到 HTTPS,然后 App Engine 将强制它返回到非 HTTPS,这样它就会继续运行,直到达到重定向限制。

要解决此问题,请找到一种方法使 /_ah/warmup URL 免于强制使用 HTTPS。您实际上可以先使用 HTTPS 在浏览器中点击 /_ah/warmup 请求,然后请注意它会降级为 HTTP(一旦您完成了修复)

于 2021-04-20T18:41:51.087 回答