Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从异步gcloud sql导出作业获取退出状态或完成消息?_Sql_Asynchronous_Gcloud - Fatal编程技术网

如何从异步gcloud sql导出作业获取退出状态或完成消息?

如何从异步gcloud sql导出作业获取退出状态或完成消息?,sql,asynchronous,gcloud,Sql,Asynchronous,Gcloud,我每天都有一项导出任务,用于将数据从gcloud sql拉到云存储中的一个存储桶中,但这项任务最终超时,gcloud会发回一个错误。尽管如此,SQL实例仍会继续运行导出,并且文件会将其发送到其目标,没有问题 为了绕过超时错误,这会弄脏我们的日志,我尝试添加--async标志,该标志可以绕过错误,但没有退出或完成消息 gcloud--project=$project sql export csv cloud sql--database=$DB$BUCKET/$(日期+%Y%m%d)\u$NAME.

我每天都有一项导出任务,用于将数据从gcloud sql拉到云存储中的一个存储桶中,但这项任务最终超时,gcloud会发回一个错误。尽管如此,SQL实例仍会继续运行导出,并且文件会将其发送到其目标,没有问题

为了绕过超时错误,这会弄脏我们的日志,我尝试添加--async标志,该标志可以绕过错误,但没有退出或完成消息

gcloud--project=$project sql export csv cloud sql--database=$DB$BUCKET/$(日期+%Y%m%d)\u$NAME.csv--async--query=“
cat$SQLPATH/$table.sql
”>$LOG 2>&1


是否有一些bash代码或修改可以接收状态更新或退出响应,我可以准确地记录作业已完成?

您可以在另一个进程中发出命令的同时启动此bash代码。它有一个函数,用于获取操作的状态(其id保存在日志中),然后比较读取的第一个状态和下一个状态,直到它们不同,并定期打印状态:


操作=$(cat$LOG | tr/\\| awk'{print$NF}'| tail-N1)
获取_状态(){
当前_状态=$(gcloud sql操作描述$OPERATION | grep状态:| awk'{print$NF}')
}
第一个\u状态=$当前\u状态
回显第一状态:$FIRST_STATUS
而[$FIRST\u STATUS==$CURRENT\u STATUS]
做
获取您的状态
回显当前状态:$CURRENT_STATUS
睡眠5
完成
回显当前状态:$CURRENT_STATUS
回音完毕!

异步是否产生操作?您应该能够阻止(或轮询)状态操作。在导出成功之前,请在Google issuetracker上提交一个同步命令超时问题。如何检查是否已生成操作?我的感觉是,一个请求被发送到云,异步性在那里发生,而不是在客户端发生——我的脚本只是移动到下一行,我已经确认gcloud命令以代码0退出,即使作业正忙于在gcloud端处理。请参阅asbovelmw@answer。还有
gcloudsql操作wait${OPERATION}
,这将节省while循环。