gpt4 book ai didi

google-app-engine - 初始化和销毁​​函数

转载 作者:IT王子 更新时间:2023-10-29 02:02:42 24 4
gpt4 key购买 nike

我仍然是 Google Cloud Appengine(标准)中的 golang 初学者。我想使用一个自动调用实例关闭的函数。在启动过程中调用了一个函数 init 。现在我正在寻找相反的部分,比如销毁函数。似乎有类似 python 的东西,但找不到golang 的任何东西。

你怎么能在 google appengine 实例中实现这样的销毁功能?

最佳答案

这记录在 Go - How Instances are Managed .

不幸的是 Go 文档不完整,这里是 Pyton 版本的链接:Python - How Instances are Managed .它的实现/支持方式与语言无关。

当一个实例启动时,一个 HTTP GET 请求被发送到 /_ah/start 路径。

在关闭实例之前,会将 HTTP GET 请求发送到 /_ah/stop 路径。

你应该使用 package init() functions出于初始化目的,因为它总是运行,而且只运行一次。如果您的 init 函数需要请求,则将处理程序注册到 _/ah/start 路径。

并且您可以向 /_ah/stop 注册一个处理程序并像这样实现“关闭”功能:

func init() {
http.HandleFunc("/_ah/stop", shutdownHandler)
}

func shutdownHandler(w http.ResponseWriter, r *http.Request) {
doSomeWork()
saveState()
}

但你不能 100% 依赖这个:

Note: It's important to recognize that the shutdown hook is not always able to run before an instance terminates. In rare cases, an outage can occur that prevents App Engine from providing 30 seconds of shutdown time. Thus, we recommend periodically checkpointing the state of your instance and using it primarily as an in-memory cache rather than a reliable data store.

关于google-app-engine - 初始化和销毁​​函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46682114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com