BigQuery golang客户端:使用哪个上下文



我使用的是Go BigQuery客户端包,对context的用法有点困惑。

在文档中,只有Put函数明确提到使用带有超时的新上下文,以避免无限期重试。对所有其他呼叫使用context.Background()是否安全?

来自golang网站:

Package context定义了context类型,该类型携带截止日期,消除信号和API上的其他请求范围的值边界和过程之间。

Context被设计为针对每个用例进行调整和定制。您可以使用库提供的函数来实现这一点。

WithCancel、WithDeadline和WithTimeout函数采用上下文(父对象(,并返回派生的Context(子对象(和取消功能。调用CancelFunc会取消子级及其子级,删除父对象对子对象的引用,并停止任何关联的定时

因此,正如您已经看到的,goDocs建议在将数据插入BigQuery并防止重复的同时,在您的上下文中使用WithTimeout函数。

唯一必须的是传递一个非nil上下文。你通常会使用context.Background()作为一种方法(正如我在Cloud Github共享的snippets.go中看到的那样(,但如果你不确定使用哪一个,你可以安全地通过context.TODO

最新更新