标签: google-cloud-run

使用 Google Cloud 执行长时间运行的任务

我已经使用 Google Cloud 几个星期了,但由于我有限的 GCP 知识,我面临着一个大问题。

我有一个 python 项目,其目标是使用其 API 从网站“抓取”数据。我的项目在执行过程中运行了数万个请求,并且可能需要很长时间(几个小时,也许更多)

我的项目中有 4 个 python 脚本,它们都是由 bash 脚本编排的

执行如下:

  • 第一个脚本检查 CSV 文件,其中包含请求的所有说明,然后执行请求,将请求的所有结果保存在 CSV 文件中
  • 第二个脚本检查之前创建的 CSV 文件并重新创建另一个 CSV 指令文件
  • 第一个脚本再次运行,但使用新指令,并再次将结果保存在 CSV 文件中
  • 第二个脚本再次检查并再次执行相同操作...
  • ……如此反复几次
  • 第三个脚本清理数据、删除重复项并创建唯一的 CSV 文件
  • 第四个脚本将最终的 CSV 文件上传到存储桶

现在我想摆脱那个 bash 脚本,并且我想自动执行这些脚本。一个星期一次。

这里的问题是执行时间。这是我已经测试过的:

Google App Engine:GAE 上的请求超时限制为 10 分钟,而我的函数可以运行几个小时。GAE 在这里不可用。

Google 计算引擎:我的脚本最多可以运行。每周 10-15 小时,在这段时间里保持计算引擎运行的成本太高了。

我可以做什么来在云环境中自动执行脚本?在不更改代码的情况下,我没有想到的解决方案可能是什么?

谢谢

python google-app-engine google-compute-engine google-cloud-platform google-cloud-run

3
推荐指数
1
解决办法
2070
查看次数

如何在不使用本地服务帐户密钥文件的情况下从 Cloud Run 服务访问 Google Cloud Storage 存储桶?

我刚刚部署了一个 Cloud Run REST API 应用程序,该应用程序使用 Google Cloud Storage API 从存储桶以及该存储桶内的文件夹中获取最后一个文件。这是我正在使用的代码:

import os
import logging
from flask import Flask
from flask import request, jsonify, render_template
from google.oauth2 import service_account
from google.cloud import storage
from bson.json_util import dumps


app = Flask(__name__)

storage_client = storage.Client.from_service_account_json('sa.json')

@app.route('/')
# API Version 1.0
def index():
    """Welcome to Last File API Version 1.0."""
    button_text = "Add File"
    return render_template('main.html', button_text=button_text)

@app.route("/last_file_m_individual/", methods=["GET"])
def list_m_individual_files():
    """List all files in GCP bucket."""
    bucketName = request.args.get('bucketname')
    bucketFolder = request.args.get('bucketfolder') …
Run Code Online (Sandbox Code Playgroud)

google-cloud-storage google-cloud-platform google-cloud-run

3
推荐指数
1
解决办法
9479
查看次数

如何将容器部署到多个GCP项目并使用Cloud Run托管?

我们需要在多个 GCP 项目中部署我们的应用程序,并由 Terraform 配置新项目。我们在每个项目中配置了 Terraform Cloud Build,但是当 Cloud Build 尝试访问集中式项目中的源存储库时,我们会遇到问题。

我们不想克隆存储库,而是指示 Cloud Build 从中央存储库使用和部署。同样重要的是,我们在部署新代码时让 Cloud Build 更新每个项目。

google-cloud-platform google-cloud-run

3
推荐指数
1
解决办法
2608
查看次数

如何在google cloud run上运行docker-compose?

我是 GCP 新手,我正在尝试使用 docker-compose 部署我的 Spring Boot Web 服务。在我的docker-compose.yml文件中,我有 3 个服务:我的应用程序服务、mysql 服务和 Cassandra 服务。在当地,它就像一个魅力。我还添加了一个cloudbuild.yaml文件:

steps:
- name: 'docker/compose:1.28.2'
  args: ['up', '-d']
- name: 'gcr.io/cloud-builders/docker'
  args: ['tag', 'workspace_app:latest', 'gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA']
images: ['gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA']
Run Code Online (Sandbox Code Playgroud)

谷歌云构建成功。但是,当我尝试在 google cloud run 上运行图像时,它不会调用 docker-compose.yml 文件。我必须如何处理才能在生产中使用 docker-compose?

production docker-compose google-cloud-build google-cloud-run

3
推荐指数
1
解决办法
7545
查看次数

Prisma DATABASE_URL 错误(Cloud Run + Cloud SQL)

我将Prisma与 Cloud Run 和 Cloud SQL 结合使用。DATABASE_URL提供给它后,prisma.schema它在运行时抛出一个错误。

Can't reach database server at `(/cloudsql/project-name:us-east1:database-id)`:`5432`
Please make sure your database server is running at `(/cloudsql/project-name:us-east1:database-id)`:`5432`."
Run Code Online (Sandbox Code Playgroud)
  • 数据库:Postgres
  • 提供的网址DATABASE_URLpostgresql://username:password@localhost/databasename?host=(/cloudsql/project-name:us-east1:database-id)

连接出了什么问题?我是否未能正确构建DATABASE_URL

google-cloud-sql prisma google-cloud-run

3
推荐指数
1
解决办法
3884
查看次数

请求中的资源字段值无效

我在这里使用 Go SDK @ cloud.google.com/go/firestore GoDoc来调用 Firestore。它在 App Engine 上运行得很好,但我最近向 Cloud Run 添加了一项新服务。此新服务调用旧服务使用的相同代码,但该代码(适用于 App Engine)在 Cloud Run 上引发错误:rpc error: code = InvalidArgument desc = Invalid resource field value in the request

引发错误的特定代码行是:

snap, err := client.Collection(queryable.CollectionName()).Doc(queryable.GetFirestoreID()).Get(ctx)
if err != nil {
    return fmt.Errorf("couldn't read document with id: %v error: %w", queryable.GetFirestoreID(), err)
}
Run Code Online (Sandbox Code Playgroud)

其中 queryable 是一个接口,而 CollectionName() 返回一个常量字符串,因此不可能是问题(此外,如果这是问题,它将返回不同的错误)。

我用更多文本包装错误消息,因此完整的错误消息可以让您了解堆栈:DoTaxDog: allDB.UpdateData: firestoreCRUD.ReadSchema: error in Firestore's ReadSchema: couldn't read document with id: AGPFiyoJdMAmurVNqHYxvKHEb error: rpc error: code = InvalidArgument …

google-cloud-platform google-cloud-firestore google-cloud-run

3
推荐指数
1
解决办法
1万
查看次数

intellij 中的 GCP Cloud 代码插件“无法启用 GCP 身份验证插件”

尝试本地运行“java cloud run hello word example”时 Cloud Run:本地运行

我不断得到

正在启用 GCP 身份验证插件...

无法启用 GCP 身份验证插件。部署将继续,但 GCP 凭据不会添加到 minikube。请通过运行以下命令确保您拥有最新的应用程序默认凭据 (ADC)gcloud auth login --update-adc

我尝试过但没有解决问题的事情

  • 跑步gcloud auth login --update-adc
  • 使用不同的服务帐户
  • 不提供服务帐户
  • 提供环境变量 GOOGLE_APPLICATION_CREDENTIALS

当前配置

我缺少什么?

google-cloud-platform google-cloud-run google-cloud-code

3
推荐指数
1
解决办法
1703
查看次数

遇到 540 秒超时限制后如何从 Firebase Functions 迁移到 Cloud Run?

我正在阅读此 Reddit 帖子,其中一位用户提到 540 秒是 Firebase 函数的限制,建议迁移到 Cloud Run。

\n
\n

正如其他人所说,540 秒是最大超时,如果您想增加它而不更改代码的其他内容,请考虑迁移到 Cloud Run。\xe2\x80\x8b- Reddit上的@samtstern

\n
\n

查看Node.JS 快速入门文档\n以及 YouTube 和 Google 上的其他内容后,我没有找到解释如何将 Firebase Function 移至 Cloud Run 的良好指南。

\n

我读到的内容没有解决的问题之一,例如:我用什么替换firebase-functions包来定义函数?ETC...

\n

那么,如何将我的 Firebase Function 转移到 Cloud Run 才不会遇到 540 秒的最大超时限制?

\n
\xe2\x80\x8bconst functions = require(\'firebase-functions\');\n\xe2\x80\x8bconst runtimeOpts = {timeoutSeconds: 540,memory: \'2GB\'}\n\xe2\x80\x8bexports.hourlyData = functions.runWith(runtimeOpts).pubsub.schedule(\'every 1 hours\')\n
Run Code Online (Sandbox Code Playgroud)\n

javascript node.js firebase google-cloud-functions google-cloud-run

3
推荐指数
1
解决办法
2013
查看次数

如何在 Cloud Run 中自动部署来自 Cloud Build 的最新映像

我用于部署Angular的CI/CD管道管道已关闭,但我发现在更新容器映像后,Google Cloud Run 不会部署新版本。

我已将 Cloud Build 设置为在更新 GitHub 上的分支时触发构建。这工作正常,我看到我得到了一个以提交哈希命名的新图像。我期望 Cloud Run 触发其服务,获取最新的映像并部署它,但它没有运行。我不确定是否需要更改图像名称,以便它们由于SHA-1哈希值而变得不唯一。

continuous-deployment google-cloud-platform google-cloud-build google-cloud-run

3
推荐指数
1
解决办法
2479
查看次数

无法在 WSL 上启动 VScode Cloud Run 插件

我正在尝试在我的 WSL 容器中使用 [适用于 VSCode 的 Google Cloud Code 插件] ( https://marketplace.visualstudio.com/items?itemName=GoogleCloudTools.cloudcode )。

第一次工作时,我修改了 WSL 上的默认用户,现在我无法使用该插件。尝试重新安装gcloud,请使用脚本安装而不是apt-get. 我还尝试了一个新的 WSL 容器(安装或未安装 gcloud),出现同样的错误。重新安装插件,没有任何变化:

[8/4/2021, 11:12:29 AM] Dependency check detected gcloud not installed
[8/4/2021, 11:12:29 AM] Dependency installer starting installation
[8/4/2021, 11:12:30 AM] [warn]ApplicationInsights:CorrelationIdManager[{}]
[8/4/2021, 11:12:33 AM] [error]Dependency installer: gcloud architecture check failed request to https://dl.google.com/dl/cloudsdk/channels/rapid/components-2.json failed, reason: Failed to establish a socket connection to proxies: ["PROXY 127.0.0.1:9000"].
[8/4/2021, 11:12:33 AM] [error]Failed gcloud installation with Error: request to https://dl.google.com/dl/cloudsdk/channels/rapid/components-2.json failed, …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform visual-studio-code google-cloud-run google-cloud-code

3
推荐指数
1
解决办法
1703
查看次数