簡體   English   中英

如何防止 Google Cloud Engine 運行多個並發實例?

[英]How to prevent Google Cloud Engine to run multiple concurrent instances?

嗨,我正在向 Google App Engine 部署一個非常簡單的 python 代碼,只是為了測試 Google App Engine 的工作原理,稍后我將用於我在本地測試過的真正更復雜的代碼。 問題是 Google App Engine 日志顯示我正在運行多個服務/線程/實例/模塊或任何名稱......同時

這是我的代碼: main.py

import time
    
def executeSomething():
    #code here
    print("Hello world!")
    time.sleep(5)
    
while True:
    executeSomething()

app.yaml

runtime: python38
service: default
handlers:
  - url: /
    script: auto
manual_scaling:
  instances: 1

我使用gcloud app deploy --stop-previous-version --version test-0-0-3

然后我使用gcloud app logs tail -s default

    2022-08-09 15:59:18 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:18 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:18 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:18 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:23 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:23 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:23 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:23 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:28 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:28 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:28 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:28 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:33 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:33 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:33 default[test-0-0-3]  Hello world!
    2022-08-09 15:59:33 default[test-0-0-3]  Hello world!

如您所見,有 4 個並發服務正在運行。 Idk 它叫什么:服務/線程/實例,但問題是它同時運行多個代碼。

在我的真實代碼中,我只想運行 1 個服務,因為我擔心如果我同時運行多個服務,它會在我插入數據庫的數據中創建重復項。

從評論中,OP 希望使用 CRON 作業運行日常任務。 在這種情況下,實例的數量無關緊要,CRON 作業只會運行一次。

您會在部署時看到多個實例,但使用 Google App Engine 標准,您應該始終運行 0 或 1 個付費實例,並且您應該可以輕松地說出在免費配額內。

GAE 是這個任務的一個很好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM