BigQuery Python客户端-超时参数的含义以及如何设置查询结果超时

最喜欢的

此问题与BigQuery Python客户端中QueryJob对象timeoutresult方法中参数有关

看来的含义timeout相对于1.24.0版本已更改。

例如,版本1.24.0中QueryJob的文档result指出超时是:

使用重试之前等待基础HTTP传输的秒数。如果在后台进行了多个请求,则将超时解释为所有请求的大约总时间。

据我了解,这可用作限制result方法调用等待结果的总时间

例如,考虑以下脚本:

import logging

from google.cloud import bigquery

# Set logging level to DEBUG in order to see the HTTP requests
# being made by urllib3
logging.basicConfig(level=logging.DEBUG)

PROJECT_ID = "project_id" # replace by actual project ID

client = bigquery.Client(project=PROJECT_ID)

QUERY = ('SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013` '
        'WHERE state = "TX" '
        'LIMIT 100')
TIMEOUT = 30  # in seconds
query_job = client.query(QUERY)  # API request - starts the query
assert query_job.state == 'RUNNING'

# Waits for the query to finish
iterator = query_job.result(timeout=TIMEOUT)
rows = list(iterator)

assert query_job.state == 'DONE'

据我了解,如果获取结果涉及的所有API调用加起来超过30秒,则对的调用result将放弃。因此,timeout此处用于限制result方法调用的总执行时间

但是,更高版本引入了更改。例如,1.27.2中文档result指出超时为:

使用重试之前等待基础HTTP传输的秒数。如果在后台进行了多个请求,则超时适用于每个单独的请求。

如果我正确理解这一点,那么上面的示例将完全改变含义,对的调用result可能会花费30秒钟以上的时间。

我的怀疑是:

  1. 如果将新版本result的旧脚本与旧版本的脚本一起运行,上面的脚本到底有什么区别
  2. 当前建议将timeout传递给哪些用例result
  3. 在等待查询结果之后,给定的总时间后,当前建议的超时方法是什么?

谢谢。

埃斯蒂夫斯

正如您在此修复程序中看到的

使传输层超时与查询超时无关,即等待查询完成的最长时间。

查询超时由阻塞轮询使用,以使后端在为完成作业而轮询时不会阻塞太长时间,但是传输可能具有不同的超时要求,我们不希望它引起有时不必要的超时错误。

  • 将超时应用于每个基础请求

由于作业方法不再在方法可能发出的所有请求之间分配超时,因此以相同方式调整客户端方法。

因此,基本区别在于,在以前的版本中,如果在下面的层中进行了许多请求,则它们将共享30秒的超时时间。换句话说,如果第一个请求花费20秒,第二个请求将在10秒后超时。在新版本中,每个单个请求将有30秒。

关于用例,基本上它取决于您的应用程序。如果您不能长时间等待可能丢失的请求,则可以减少超时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将BigQuery脚本的结果返回给Python客户端

来自分类Dev

在google bigquery中,如何使用google python客户端使用javascript UDF

来自分类Dev

BigQuery-如何从Java客户端注册UDF

来自分类Dev

是否可以在python客户端中调用BigQuery过程?

来自分类Dev

使用Python客户端的Google BigQuery API

来自分类Dev

Google BigQuery - python 客户端 - 创建/管理作业

来自分类Dev

gRPC客户端超时

来自分类Dev

CloudTableClient 客户端超时

来自分类Dev

如何设置Camel RESTful客户端超时和HTTPClientPolicy

来自分类Dev

使用适用于 Python 的 BigQuery API 客户端库时无法访问网络

来自分类Dev

wsgi-处理客户端超时

来自分类Dev

wsgi-处理客户端超时

来自分类Dev

等待识别客户端超时 (ReadStreamEventsForwardAsync)

来自分类Dev

Apache HTTP 客户端超时

来自分类Dev

Feathers JS 客户端超时

来自分类Dev

如何限制套接字的连接数并触发客户端超时(Python)

来自分类Dev

意外的关键字参数“缓冲”-python客户端

来自分类Dev

Java HTTP客户端请求设置超时

来自分类Dev

Azure blob 客户端设置更短的超时

来自分类Dev

如何在Python中模拟Redis客户端?

来自分类Dev

如何在Python中使用DICT协议客户端?

来自分类Dev

如何使Braintree的python客户端重用连接?

来自分类Dev

如何从Instagram Python客户端检索视频?

来自分类Dev

如何在Python中使用dialogflow客户端

来自分类Dev

如何使用Python确定客户端证书类型?

来自分类Dev

如何从python客户端发送JSON对象到kafka

来自分类Dev

Samba客户端设置

来自分类Dev

找不到OAuth客户端-Google Apps脚本-BigQuery

来自分类Dev

BigQuery:NodeJS 客户端库时间戳错误

Related 相关文章

热门标签

归档