我有一个应用程序,它将用户数据存储在GCP数据存储中。我制作了一个cron作业,计划使用此处给出的说明导出数据存储中的数据。
现在,当这项工作失败时,我想得到结果和完成时间。(不是cron,而是由cron移动的作业(
如何获取导出云数据存储的结果详细信息
计划的数据存储导出(和导入(可以是长时间运行的操作,因此它们支持异步执行和进度监控。
基本上,当你启动操作时,你会得到一个操作id:
例如,当您启动导出时,云数据存储服务创建一个长期运行的操作来跟踪导出状态。这是导出开始时的输出:
{ "name": "projects/[YOUR_PROJECT_ID]/operations/ASAyMDAwOTEzBxp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKKhI", "metadata": { "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata", "common": { "startTime": "2017-05-25T23:54:39.583780Z", "operationType": "EXPORT_ENTITIES" }, "progressEntities": {}, "progressBytes": {}, "entityFilter": { "namespaceIds": [ "" ] }, "outputUrlPrefix": "gs://[YOUR_BUCKET_NAME]" } }
name字段的值是长时间运行的操作的ID。
然后,您可以在操作管理API中使用带有projects.operations.get
的操作ID来获取其完成时间和结果URL:
此示例输出显示最近完成的导出操作。操作可在完成后几天内访问:
{ "operations": [ { "name": "projects/[YOUR_PROJECT_ID]/operations/ASAyMDAwOTEzBxp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKKhI", "metadata": { "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata", "common": { "startTime": "2017-12-05T23:01:39.583780Z", "endTime": "2017-12-05T23:54:58.474750Z", "operationType": "EXPORT_ENTITIES" }, "progressEntities": { "workCompleted": "21933027", "workEstimated": "21898182" }, "progressBytes": { "workCompleted": "12421451292", "workEstimated": "9759724245" }, "entityFilter": { "namespaceIds": [ "" ] }, "outputUrlPrefix": "gs://[YOUR_BUCKET_NAME]" }, "done": true, "response": { "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesResponse", "outputUrl": "gs://[YOUR_BUCKET_NAME]/2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata" } } ] }
我不完全确定如何区分失败的作业,不过,我想response
字段中会显示不同的内容。