2017-08-10 59 views
1

我在Google Cloud中部署了一個包含多個微服務的應用。對於其中之一,我希望使用推送隊列。我配置我的queue.yaml文件如下:在Google Cloud中部署推送隊列

queue: 
- name: equeue 
    rate: 10/s 
    retry_parameters: 
    task_retry_limit: 1 
    task_age_limit: 2d 

我旋轉了SDK和隊列工作正常,就像它應該。但後來我去用它推到我的谷歌雲應用:

gcloud app deploy --project=<projectname> --promote --stop-previous-version 

的代碼都正確加載,但隊列永遠不會被創建。我從我的代碼獲得錯誤如下:

API error 1 (taskqueue: UNKNOWN_QUEUE) 

當我看在控制檯上https://console.cloud.google.com/appengine/taskqueues,隊列尚未創建。

我讀過文檔,它似乎表明我所需要做的就是創建queue.yaml文件並部署應用程序(並且這對我來說已經適用了,儘管使用了舊版本的SDK)

萬一有幫助,下面是我在本地運行的組件:

Google Cloud SDK 164.0.0 
app-engine-go 
app-engine-python 1.9.57 
bq 2.0.24 
core 2017.07.25 
gcloud 
gsutil 4.27 

謝謝! Dan

回答

1

queue.yaml是應用程序級別的配置文件,而不是服務特定的配置文件。見(輕微相關)Why do I need to deploy a "default" app before I can deploy multiple services in GCP?

雖然在單一服務的應用程序的情況下部署default服務威力也更新一個或多個未在多業務應用的情況下保證這些應用程序級的configs的。這就是爲什麼這些配置中的每一個都配備了獨立的專用部署方法,可以獨立執行和/或不更新任何應用程序的服務。

特別是對於部署queue.yaml可以使用gcloud app deploy做到:

gcloud app deploy [...] queues.yaml 

,或者,如果你使用的GAE SDK,使用appcfg.py update_queues

appcfg.py update_queues -A <app_id> 
+0

感謝。我嘗試將queue.yaml文件移動到我的默認服務,但它不起作用。但是當我嘗試gcloud deploy queues.yaml命令時,它確實如此。唯一的問題是我需要在服務的目錄中保留queue.yaml文件的副本,否則它在SDK中不起作用。我想知道爲什麼Google讓隊列以這種方式工作,而不是讓它們像其他所有東西一樣通過控制檯建立起來?無論如何,感謝您的幫助。 – Dan

+0

您可以對文件進行對接以保持SDK的快樂。請參閱https://stackoverflow.com/questions/34110178/can-a-default-service-module-in-a-google-app-engine-app-be-a-sibling-of-a-non- de/34111170#34111170 –

+0

控制檯驅動的配置相當糟糕:對自動化不友好,無法進行版本控制,在StackOverflow上獲得幫助的噩夢等等。 –

相關問題