我使用的是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
。