当前位置: 首页 > 知识库问答 >
问题:

等待数据存储导出作业完成

庞阳波
2023-03-14
import base64
import json
import os

from googleapiclient.discovery import build

datastore = build('datastore', 'v1')
project_id = os.environ.get('GCP_PROJECT')


def datastore_export(event, context):
    '''Triggers a Datastore export from a Cloud Scheduler job.

    Args:
        event (dict): event[data] must contain a json object encoded in
            base-64. Cloud Scheduler encodes payloads in base-64 by default.
            Object must include a 'bucket' value and can include 'kinds'
            and 'namespaceIds' values.
        context (google.cloud.functions.Context): The Cloud Functions event
            metadata.
    '''

    json_data = json.loads(base64.b64decode(event['data']).decode('utf-8'))
    bucket = json_data['bucket']
    entity_filter = {}

    if 'kinds' in json_data:
        entity_filter['kinds'] = json_data['kinds']

    if 'namespaceIds' in json_data:
        entity_filter['namespaceIds'] = json_data['namespaceIds']

    request_body = {
        'outputUrlPrefix': bucket,
        'entityFilter': entity_filter
    }

    export_request = datastore.projects().export(
        projectId=project_id,
        body=request_body
    )
    response = export_request.execute()
    print(response)
    null

如何调用API来验证作业是否已完成,并获取已保存导出的URL?

谢了。

共有1个答案

松建本
2023-03-14

不是BigQuery作业应该询问何时启动,而是Datastore应该启动它。有很多方法可以做到这一点,但我找到了一个教程,您可能会发现有帮助:如何在新的Google Analytics表可用时立即运行您的查询

 类似资料:
  • 已成功执行作业E=但找不到数据。此外,检查了在hcatalog中创建的表的位置,检查该位置后发现没有为此创建任何目录,并且只找到了一个0字节的文件_$folder$。

  • 我使用ScheduledExecutorService跨多个线程调度和处理作业。在我的应用程序中,作业可以安排新作业(在相同的ScheduledExecutorService上),作为某种后续操作。 在主线程中,我想等到所有作业都完成,作为同步点。有和方法,但这不允许任何正在运行或挂起的作业安排新作业。在我的情况下,我实际上希望允许这样做,接受我们永远不会完成(或遇到一些超时)的风险。 我如何等待

  • 我通读了Dart/flatter中的Async/Await/then,试图理解为什么aysnc函数中的Await不会等到完成后再继续。在我的UI中,有一个按钮调用一个异步方法来返回一个位置,该位置总是返回null,并且不等待函数完成。 该函数将调用推送到一个新的UI页面,该页面选择一个位置,并应返回一个结果。如何使该函数等待结果?我不是在使用异步吗?

  • 我已经在一个订单中链接了一组Spring批处理作业。 我怀疑任务执行者。在独立的情况下,我们不指定任何任务执行器(默认值为SyncTaskExecutor),作业流工作正常。但是在Jboss中部署时,我们使用SimpleAsyncTaskExecutor,因为在Jboss中使用SyncTaskExecutor甚至不会触发作业。 我在这里错过了什么,或者我在这里做错了什么。?请建议。

  • 问题内容: 我有一个登录框架,我必须从另一个线程等待。成功登录后,框架将自行处置。我想弹出该应用程序的主框架。现在,我正在观看一个布尔值,以确定何时启动主机。正确的做法是什么?观看布尔值只是感觉并不优雅。 问题答案: 如果您有Java 5或更高版本,则可以使用CountDownLatch。例如,假设主框架最初处于控制状态,则让主框架创建一个倒数为1的,然后将此锁存器传递给登录框架。然后让主机等待锁