在 Go SDK 中等待 AWS Athena 查询执行

在 go sdk 中等待 aws athena 查询执行

php小编百草在Go SDK中等待AWS Athena查询执行指南中,旨在帮助开发者优化查询性能和提高应用程序的响应速度。AWS Athena是一种无服务器查询服务,可以直接在S3存储桶中运行SQL查询,无需预先定义模式或进行数据加载。然而,由于查询的异步执行特性,开发者需要等待查询完成后才能获取结果。本指南将介绍如何使用Go SDK中的等待机制,以便在查询执行期间进行有效的等待,并在查询完成后获取结果,从而提供更好的用户体验和应用程序性能。

问题内容

我有一个运行 athena 查询的工作代码,并通过使用以下代码轮询 getqueryresults 返回的 error 来等待查询完成:

func getqueryresults(client *athena.client, queryid *string) []types.row {    params := &athena.getqueryresultsinput{        queryexecutionid: queryid,    }    data, err := client.getqueryresults(context.todo(), params)    for err != nil {        println(err.error())        time.sleep(time.second)        data, err = client.getqueryresults(context.todo(), params)    }    return data.resultset.rows}

登录后复制

问题是,如果查询失败,我绝对没有办法打破循环。

例如,在 python 中我可以执行以下操作:

    while athena.get_query_execution(QueryExecutionId=execution_id)["QueryExecution"][        "Status"    ]["State"] in ["RUNNING", "QUEUED"]:        sleep(2)

登录后复制

我可以在 for 循环内进行类似 strings.contains(err.error(),”failed”) 的检查,但我正在寻找一种更干净的方法。

我尝试寻找 go 的等效项,但没有成功。 go sdk有没有可以返回执行状态的函数?有没有更好的方法来进一步检查 go 中的错误而不是 err != nil ?

解决方法

sdk已提供重试功能。

这是一个使用 aws-sdk-go-v2 的示例。

package mainimport (    "context"    "fmt"    "time"    "github.com/aws/aws-sdk-go-v2/aws"    "github.com/aws/aws-sdk-go-v2/service/athena"    "github.com/aws/aws-sdk-go-v2/service/athena/types")func main() {    cfg := aws.NewConfig()    ath := athena.NewFromConfig(*cfg)    ctx, cancelFunc := context.WithTimeout(context.Background(), time.Minute*5)    defer cancelFunc()    rows, err := GetQueryResults(ctx, ath, aws.String("query-id"), 10)    if err != nil {        panic(err) // TODO: handle error    }    fmt.Println(rows)}func GetQueryResults(ctx context.Context, client *athena.Client, QueryID *string, attempts int) ([]types.Row, error) {    t := time.NewTicker(time.Second * 5)    defer t.Stop()    attemptsFunc := func(o *athena.Options) { o.RetryMaxAttempts = attempts }WAIT:    for {        select {        case 

登录后复制

以上就是在 Go SDK 中等待 AWS Athena 查询执行的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2484417.html

(0)
上一篇 2025年3月4日 21:32:42
下一篇 2025年3月3日 08:02:05

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论