1

我一直在将 Google Cloud Video Intelligence 注释功能与 Google App Engine Flex 结合使用。当我尝试对两小时视频使用 VideoIntelligence 时,AnnotateVideo 功能需要 60 分钟才能响应。

gs_video_path ='gs://'+bucket_name+'/'+videodata.video.path+videodata.video.name
print(gs_video_path)

video_client = videointelligence.VideoIntelligenceServiceClient()
features = [videointelligence.enums.Feature.OBJECT_TRACKING]
operation = video_client.annotate_video(gs_video_path, features=features)

目前,我唯一可以执行此操作的地方是 Google App Engine Flex。然而,Google App Engine Flex 始终保持实例空闲,就成本而言,它与运行 VM 非常相似。

据我所知,Google App Engine 的超时时间为 540 秒,同样明智的 Google Cloud Run 的超时时间为 900 秒,而 Google Cloud Functions 的最大超时时间为 600 秒。

在这些情况下,我应该使用哪个 Google Cloud 产品进行一小时的流程,同时避免在没有使用时出现空闲实例。

(请不要回复引用 GKE 或其他基于 VM 的解决方案,不接受空闲实例解决方案)

4

3 回答 3

2

Cloud Run 的 900 秒超时可能会很快更改以满足您的需求(最多一个小时)。作品中有一个特点。一旦它在测试版中可用,我会在这里更新,敬请期待。

#ahmetb-todo

于 2020-05-06T16:14:24.750 回答
1

您可以在原始请求中指定output_uri 。这会将最终结果写入您的 GCS 存储桶。然后,您不必等待长时间运行的操作在您的 VM 上完成。初始请求只需几秒钟,因此您可以使用 Google Cloud Function。

当操作在一小时后完成时,您可以通过在输出 GCS 存储桶上设置触发器来处理输出 json 文件。

于 2020-05-09T00:35:01.057 回答
1

我认为 Google 没有满足您需求的服务。
可能您应该实现一些自定义工作流程,例如:

  1. 从“短命”环境,如 Function、CloudRun 或 AppEngine 执行以下操作:
    1. 将您的长期任务的事件放到 PubSub
    2. 使用 Compute Engine API 启动虚拟机
  2. 当 VM 启动时,它的启动脚本应该从 PubSub 获取最新项目并启动您的长时间运行的任务
  3. 任务完成后,VM 使用 ComputeEngine API 自行终止或调用调用关闭的函数
于 2020-05-06T16:25:29.347 回答