HTTP/2帧层中的流错误:R studio中的bigrquery命令错误,但在基本R中没有

HTTP/2帧层中的流错误:R studio中的bigrquery命令错误,但在基本R中没有,r,curl,google-bigquery,rstudio,R,Curl,Google Bigquery,Rstudio,我有几个用R编写的程序,它们使用bigrquery运行查询、表删除和上传数据。这些都是在R studio中编写的,R版本为3.3.1,安装在Windows7机器上。一点问题也没有,反复运行它们 一名新员工正试图在Windows10上运行同样的程序。基本R和R studio的相同版本。所有软件包安装良好,没有任何错误。但是通过代码发送到bigquery的命令,即query\u exec、insert\u upload\u job将提交,但它们会挂起几分钟,然后返回以下错误: curl::curl\

我有几个用R编写的程序,它们使用bigrquery运行查询、表删除和上传数据。这些都是在R studio中编写的,R版本为3.3.1,安装在Windows7机器上。一点问题也没有,反复运行它们

一名新员工正试图在Windows10上运行同样的程序。基本R和R studio的相同版本。所有软件包安装良好,没有任何错误。但是通过代码发送到bigquery的命令,即query\u exec、insert\u upload\u job将提交,但它们会挂起几分钟,然后返回以下错误:

curl::curl\u fetch\u memoryurl中出错,句柄=句柄: HTTP/2帧层中的流错误

这些查询通常在2秒钟内运行。这些命令在同一台机器上的base R中快速运行,没有错误

我在家里有一台Windows10笔记本电脑,所以我以同样的方式安装了所有东西,并且它显示了同样的行为。这些命令在base R中运行良好,但在返回上述错误之前,会在R studio中挂起几分钟

奇怪的是,在R studio中周期性地运行相同的命令,但大多数时候我们都会出错

我查找此问题并发现: r-hub/rhub32

但我不知道如何在客户端关闭http2,看看这是否有帮助

我注意到的一件事是,当我检查卷曲版本时: curl::curl_版本 它在我的Windows 7计算机上显示了7.47.1版本,该版本正常工作,但没有显示http2值

在Windows 10计算机上,它显示curl版本7.53.1,并显示http2=TRUE参数

我还没有弄清楚如何在Win10机器上弃用curl的版本,看看这是否能解决这个问题

无论如何,我会想,如果最新版本有问题,其他人也会有同样的问题

我也在bigrquery github问题页面上发布了这篇文章,但到目前为止还没有人回复


感谢您的帮助

我通过执行以下步骤创建了一个变通方法:

当我尝试安装旧版本的curl时,删除了我的基本R win库子文件夹中的curl文件夹。它无法自动删除当前版本

安装curl版本0.9.7此版本不使用http2

install.packages("https://cloud.r-project.org/bin/windows/contrib/3.1/curl_0.9.7.zip", repos=NULL,type="source")
运行curl::curl\u version以确认没有http2参数


从长远来看,仍然需要有人来解决这个问题。我已经将它发布在github存储库中,用于bigrquery,但我不确定他们是否需要修复它,或者修复是否需要在curl函数中进行。

无需降级以解决此问题。相反,您可以使用以下方法之一设置特定的http\U版本

方法1-httr 对于使用该软件包的用户,可以直接如下所示指定首选HTTP版本:

0代表CURL\u HTTP\u VERSION\u NONE请参见下面的HTTP\u VERSION值 httr::set_confighttr::confighttp_version=0 有人建议采取这种变通办法

方法2-旋度或RCurl 包vignettes中提供了另一个关于如何直接使用设置选项的较低级别示例。摘录:


h curl::handle_setopt用于设置卷曲控制柄选项。您希望确保将http_version设置为2,它映射到CURL库中的CURL_http_version_1_1。但是,我使用bigquery还不足以知道如何将该句柄传递给ops。我也不知道如何将此选项传递到句柄中——我将在github帖子中添加您对此问题的评论,因为这可能有助于bigrquery开发人员识别修复程序。