【问题标题】:Deploying Push Queues in Google Cloud在 Google Cloud 中部署推送队列
【发布时间】:2018-01-18 01:02:32
【问题描述】:

我正在 Google Cloud 中部署一个具有多个微服务的应用。对于其中一个,我希望使用推送队列。我将我的 queue.yaml 文件配置如下:

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

我启动了 SDK,队列工作正常,正如它应该的那样。但随后我将其推送到我在 Google Cloud 上的应用程序:

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

谢谢! 丹

【问题讨论】:

    标签: google-app-engine google-cloud-platform


    【解决方案1】:

    queue.yaml 是应用级别的配置文件,而不是特定于服务的配置文件。见(勉强相关)Why do I need to deploy a "default" app before I can deploy multiple services in GCP?

    在部署default 服务的单个服务应用案例中可能还会更新这些应用级配置中的一个或多个,这在多服务应用案例中无法保证。这就是为什么这些配置中的每一个都带有单独的专用部署方法,可以独立执行和/或不更新任何应用程序的服务。

    对于queue.yaml,特别是可以使用gcloud app deploy进行部署:

    gcloud app deploy [...] queues.yaml
    

    或者,如果您使用的是 GAE SDK,请使用 appcfg.py update_queues

    appcfg.py update_queues -A <app_id>
    

    【讨论】:

    • 谢谢。我尝试将 queue.yaml 文件移动到我的默认服务,但它不起作用。但是当我尝试 gcloud deploy [...] queues.yaml 命令时,它确实做到了。唯一的问题是我还需要在服务目录中保留 queue.yaml 文件的副本,否则它在 SDK 中不起作用。我想知道为什么谷歌让队列以这种方式工作,而不是让它们像其他所有东西一样通过控制台设置?无论如何,谢谢你的帮助。
    • 您可以对文件进行符号链接以使 SDK 满意。请参阅stackoverflow.com/questions/34110178/… 中的示例
    • 控制台驱动的配置相当糟糕:对自动化不友好,无法进行版本控制,在 StackOverflow 上获得帮助是一场噩梦 :) 等等。
    猜你喜欢
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2019-10-06
    相关资源
    最近更新 更多