C# bigquery上载大(压缩)CSV 100秒超时

C# bigquery上载大(压缩)CSV 100秒超时,c#,csv,file-upload,upload,google-bigquery,C#,Csv,File Upload,Upload,Google Bigquery,当尝试用.NETAPI1.5.0.222上传一个(大的)“gzip”(30MB)压缩的csv文件(90MB)时,我总是在100秒后出错 [System.Threading.Tasks.TaskCanceledException] {System.Threading.Tasks.TaskCanceledException: A task was canceled. at Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNon

当尝试用.NETAPI1.5.0.222上传一个(大的)“gzip”(30MB)压缩的csv文件(90MB)时,我总是在100秒后出错

[System.Threading.Tasks.TaskCanceledException]    {System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
   at Microsoft.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Microsoft.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
   at Google.Apis.Upload.ResumableUpload`1.<Upload>d__0.MoveNext() in c:\code.google.com\google-api-dotnet-client\default_3\Tools\Google.Apis.Release\bin\Debug\output\default\Src\GoogleApis\Apis\[Media]\Upload\ResumableUpload.cs:line 362}  System.Threading.Tasks.TaskCanceledException
[System.Threading.Tasks.TaskCanceledException]{System.Threading.Tasks.TaskCanceledException:任务已取消。
在Microsoft.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务任务)中
在Microsoft.Runtime.CompilerServices.TaskWaiter.HandleNonSuccess(任务任务)中
在Microsoft.Runtime.CompilerServices.TaskWaiter.ValidateEnd(任务任务)中
在Microsoft.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()中
在c:\code.Google.com\Google api dotnet client\default\u 3\Tools\Google.api.Release\bin\Debug\output\default\Src\GoogleApis\api\[Media]\Upload\ResumableUpload.cs:line 362}System.Threading.Tasks.TaskCanceledException中的Google.api.Upload.ResumableUpload.MoveNext()中
我在这里发现了与HTTP POST 100秒超时相关的内容:

但它仅与HttpWebRequest类相关(并不特别与Bigquery.NETAPI相关)

我没有找到如何使用bigquery(.net)API设置此超时,也没有找到如何访问底层(我想)HttpWebRequest实例

有没有办法设置此超时


或者是为了避免超时而将本地csv文件上载到bigquery的特定方式?

我不熟悉您正在使用的.NET库,但由于您正在进行可恢复的上载,您能否将上载分为不到100秒的几部分?

我不熟悉您正在使用的.NET库,但是,既然你正在进行可恢复上传,你能将上传分成不到100秒的片段吗?

这太容易了,问这个问题几乎是一种耻辱。。。 该项目中缺少一个参考资料,并且允许这样做的财产不可见。 无论如何解决方案是(10分钟超时):


这太容易了,问这个问题几乎是一种耻辱。。。 该项目中缺少一个参考资料,并且允许这样做的财产不可见。 无论如何解决方案是(10分钟超时):


我认为延长超时时间不是一个好的做法

我就是这样做的。谷歌API上传是可恢复的,这意味着他们支持将文件切成块。(如果出现问题,则恢复)

我就是这样做的:

   JobInfo = m_bigQueryService.Jobs.Insert(jobBody, sProject, file, "application/octet-stream");

                // Chunk size in MB
                JobInfo.ChunkSize = 1 * Google.Apis.Upload.ResumableUpload<Job>.MinimumChunkSize; // currently 250kb
                int t = 1;
                JobInfo.ProgressChanged += progress =>
                    {
                        // You can put what ever you like here - triggered after each chunk is uploaded
                    };

                uploadProgress = JobInfo.Upload(); // Sync upload


                if (uploadProgress.Status != UploadStatus.Completed)
                {
                    // Do something
                }
JobInfo=m_bigQueryService.Jobs.Insert(作业体、项目、文件,“应用程序/八位字节流”);
//块大小(MB)
JobInfo.ChunkSize=1*Google.api.Upload.ResumableUpload.MinimumChunkSize;//目前为250kb
int t=1;
JobInfo.ProgressChanged+=进度=>
{
//你可以把任何你喜欢的东西放在这里-在每个区块上传后触发
};
uploadProgress=JobInfo.Upload();//同步上传
if(uploadProgress.Status!=UploadStatus.Completed)
{
//做点什么
}
您可以在此处阅读更多内容:

我认为延长超时时间不是一个好的做法

我就是这样做的。谷歌API上传是可恢复的,这意味着他们支持将文件切成块。(如果出现问题,则恢复)

我就是这样做的:

   JobInfo = m_bigQueryService.Jobs.Insert(jobBody, sProject, file, "application/octet-stream");

                // Chunk size in MB
                JobInfo.ChunkSize = 1 * Google.Apis.Upload.ResumableUpload<Job>.MinimumChunkSize; // currently 250kb
                int t = 1;
                JobInfo.ProgressChanged += progress =>
                    {
                        // You can put what ever you like here - triggered after each chunk is uploaded
                    };

                uploadProgress = JobInfo.Upload(); // Sync upload


                if (uploadProgress.Status != UploadStatus.Completed)
                {
                    // Do something
                }
JobInfo=m_bigQueryService.Jobs.Insert(作业体、项目、文件,“应用程序/八位字节流”);
//块大小(MB)
JobInfo.ChunkSize=1*Google.api.Upload.ResumableUpload.MinimumChunkSize;//目前为250kb
int t=1;
JobInfo.ProgressChanged+=进度=>
{
//你可以把任何你喜欢的东西放在这里-在每个区块上传后触发
};
uploadProgress=JobInfo.Upload();//同步上传
if(uploadProgress.Status!=UploadStatus.Completed)
{
//做点什么
}
您可以在此处阅读更多内容:

问一个问题,即使很简单也不丢脸。你知道为什么,因为我用你的答案节省了一天的时间和一个使用谷歌驱动API的头疼问题。谢谢你给出了这个有用的答案。问一个问题,即使很简单也不丢脸。你知道为什么,因为我用你的答案节省了一天的时间和一个使用谷歌驱动API的头疼问题。谢谢你的回答。