【问题标题】:How to override default time out for BigQuery method calls如何覆盖 BigQuery 方法调用的默认超时
【发布时间】:2020-07-20 16:19:19
【问题描述】:

我了解 BigQuery 的默认超时时间为 1 分钟。我想知道在调用 Operation 方法期间或在初始化 BigQuery 客户端时是否有任何方法可以覆盖默认超时值。我在 BigQuery 文档中看到了作业的超时选项,但在我的情况下,我在没有作业的情况下集成到 BigQuery。

我尝试将选项中的 'timeoutMs:1' 传递给方法调用,但没有效果任何指针都会有所帮助

【问题讨论】:

    标签: node.js google-bigquery


    【解决方案1】:

    尝试将其作为作业而不是查询运行:

    const [job] = await bigquery.createQueryJob(options);
    console.log(`Job ${job.id} started.`);
    // Wait for the query to finish
    const [rows] = await job.getQueryResults();
    // Print the results
    console.log(`Rows: ${rows}`);
    

    另外,timeoutMs 以毫秒为单位。以下是选项对象中可用选项的完整列表: Method: jobs.query

    【讨论】:

    • 嗨尼克,谢谢,但我有一个要求,我不想在哪里使用 Job。
    • 您是否尝试在选项对象中将 timeoutMs 调整为更大的数字?如果将其设置为大于 1 分钟会发生什么?还是更少?
    • 完全没有效果。我执行了一个查询,这将需要一些时间来获取记录,这就是为什么我尝试将 timeoutMs 添加为 1 ms 以检查我是否收到超时错误,但事实并非如此
    • 也许谷歌有一个值验证,因为我猜没有查询会在 1 毫秒内完成。如果您现在还没有尝试,请尝试将其设置为 10000(10 秒),然后看看会发生什么。
    【解决方案2】:

    正如您在官方source code 中看到的,query 操作指的是job.query,并提到我们可以在此page 看到完整的选项设置。

    在提到的页面中,我们可以找到关于timeoutMs的以下信息:

    可选。等待查询完成的时间,以毫秒为单位, 在请求超时并返回之前。请注意,这只是一个 请求超时,而不是查询。如果查询需要更长的时间 运行超过超时值,调用返回没有任何结果,并且 将“jobComplete”标志设置为 false。你可以打电话 jobs.getQueryResults() 等待查询完成并读取 结果。默认值为 10000 毫秒(10 秒)。

    由于该页面被提及为完整参考,因此我认为这是默认行为。

    【讨论】:

    • 如果答案有用,请考虑投票。如果它完全回答了问题,请考虑接受。您可以点击 ✓ 接受它并点击 ▲
    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多