我有一個使用 Cron 作業每 15 分鐘啟動一次的 Google App Engine 實體:它只是每 15 分鐘收到一個 https 請求。然后服務器運行許多 cron 作業并需要終止。我已經使用以下開頭的 yaml 檔案設定了服務器:
runtime: php81
service: crontask
instance_class: B4
basic_scaling:
max_instances: 1
idle_timeout: 2m
這在大多數情況下都有效:實體啟動,作業運行,然后實體在完成作業后 2 分鐘終止。但有時(每幾周一次)實體會持續運行 24 小時(GAE 的最大超時時間),這會破壞當時正在運行的 cron 作業。
問題:如果作業結束,我想以編程方式終止服務器。所以服務器需要給自己發送一個終止信號。這可能嗎?
CLI 程式gcloud允許您關閉實體,如https://cloud.google.com/sdk/gcloud/reference/app/instances/delete中所述,并且引數都可用作環境變數:
GAE_INSTANCE - instance id
GAE_VERSION - version
GAE_SERVICE - service name
所以我認為應該可以呼叫相同的 urlgcloud來洗掉/關閉實體,但我還沒有找到檔案如何做到這一點。
uj5u.com熱心網友回復:
我不知道你能不能做到這一點,因為我還沒有做到。
然而...
對于任何gcloud命令,您可以追加--log-http以查看該命令進行了哪些底層 REST 呼叫。
或者,您可以使用APIs Explorer查找例如App Engine Admin API,然后查找instances.delete.
Google 為其所有服務提供客戶端庫。因此,根據您的語言,您可以為此 API 找到您的語言的云客戶端庫或 API 客戶端庫。我鼓勵您使用 Google 庫而不是直接呼叫 API。
uj5u.com熱心網友回復:
當您達到預算時,有一個解決方法可以禁用GAE 應用程式。該解決方法涉及將 to 設定servingStatus為USER_DISABLED. 也許你可以看看代碼,看看你是否可以重新利用它來完成你想要的(例如,找到一個可以關閉應用程式而不是禁用它的屬性)。
我們在博客上發表了一篇包含代碼的文章。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512611.html
