File upload YouTube API上传“;“一项任务被取消”;

File upload YouTube API上传“;“一项任务被取消”;,file-upload,youtube,youtube-data-api,File Upload,Youtube,Youtube Data Api,我们已经运行了一年多的服务,使用APIv3上传(使用.NET库Google.API.YouTube.v3)将视频上传到YouTube 在过去的两天里,我们突然开始让所有上传都在上传过程中部分失败,错误从YouTube返回“任务被取消”。这些视频部分上传到YouTube上,进展不一(有些只有几MB,有些高达17-20MB,但看起来进展较大的视频在之前的失败列表中) 这首先发生在星期五晚上,我能够在星期六早上毫无意外地推送所有失败的视频,但随后在星期六早上它又开始了,因为星期六下午和晚上的所有视频都

我们已经运行了一年多的服务,使用APIv3上传(使用.NET库Google.API.YouTube.v3)将视频上传到YouTube

在过去的两天里,我们突然开始让所有上传都在上传过程中部分失败,错误从YouTube返回“任务被取消”。这些视频部分上传到YouTube上,进展不一(有些只有几MB,有些高达17-20MB,但看起来进展较大的视频在之前的失败列表中)

这首先发生在星期五晚上,我能够在星期六早上毫无意外地推送所有失败的视频,但随后在星期六早上它又开始了,因为星期六下午和晚上的所有视频都失败了。我们谈论的是总共25个左右的视频,所以不是几百个。视频大小都在40MB左右

通常一次只能上传2-3个视频。当我在周六早上成功地把它们都推高的时候,我实际上一次推高了4-5个

其他人能否提出可能的原因或任何故障排除提示?除此之外,我们还没有看到任何服务器连接问题,在该服务器上运行的网站也没有任何明显的问题。除了YouTube上的“任务被取消”错误之外,我看不到任何其他错误返回,在该错误出现之前,上传程序的进度是成功的


编辑:我还可以通过从我的开发环境上传的一个文件来重现这个问题。我刚刚尝试获取一组全新的API凭据(实际上是针对不同的YouTube帐户),刷新了oAuth令牌,但仍然存在相同的问题。

您需要在使用服务之前设置超时,如果用户更改了超时,您需要暂停所有上载,清空服务并再次初始化它

我很确定我可以确认设置YouTubeService.HttpClient.Timeout确实解决了这个问题

对不起,我没有及时回复

internalyoutubeservice YouTubeService{get;set;}
内部异步任务initialiseyoutubeservicesync(int-timeoutSeconds)
{
var scope=新列表{YouTubeService.scope.YoutubeUpload,YouTubeService.scope.Youtube,};
var clientSecrets=new clientSecrets()
{
ClientId=Constants.ClientId,
ClientSecret=Constants.ClientSecret
};
var fileDataStore=新的fileDataStore(Constants.fileDataStore);
尝试
{
var credentialTask=GoogleWebAuthorizationBroker.AuthorizationAsync(
clientSecrets、scope、Environment.UserName、CancellationToken.None、fileDataStore);
//这是一种黑客行为,当用户关闭程序时允许进度条超时
//未经授权的浏览器。它与当前问题无关。
等待任务.wheny(凭证任务,任务.Delay(TimeSpan.FromSeconds(timeoutSeconds)));
if(credentialTask.Status==TaskStatus.WaitingForActivation)返回;
var initializer=new BaseClientService.initializer()
{
HttpClientInitializer=credentialTask.Result,
ApplicationName=Constants.ApplicationName,
};
YouTube服务=新的YouTube服务(初始值设定项);
//这就是目前问题的答案。
YouTubeService.HttpClient.Timeout=TimeSpan.frommins(Settings.Default.TimeoutMinutes);
}
捕获(聚合异常)
{
Exceptions.LogSilent(新异常(ResourceExceptions.AuthorizationDenied)、MethodBase.GetCurrentMethod()、EventLogEntryType.Information);
}
}

我的应用程序的几个客户来自世界各地,我看到了这一点。我没有更改任何代码,但在最近的版本中更新了API。我可以在我的开发机器上重现这个问题,但我还没有开始调查,只是想看看它来自progress changed事件中的API,而不是我的代码。我想我已经确定了这个问题。增加YouTubeService.HttpClient.Timeout有望为我解决这个问题。默认值为1分40秒。现在把时间延长到10分钟似乎是可行的。我会让它用户可调。API返回的异常是“任务取消异常”,这与用户为我取消上传一样,因此我需要以某种方式解决这个问题。先生,您是一个传奇人物!我已经到了每天早上使用变通方法来运行上传的地步(当它在95%的时间内工作时)。因此,听起来YouTube服务器对上传的响应时间可能比平时长,因此出现了这个问题(显然,在一天中的某些时间,它比其他时间更繁忙,因此通常在早上工作)。您正在使用.NET库吗?如果是,您在哪里设置此超时?你介意分享它吗(也许是一个答案,因为如果它有效的话,我想把它标记为答案)?谢谢您是否发现超时更改解决了您的问题?如果是,你介意分享你的解决方案吗?我一直在努力让它工作,因为使用异步方法似乎无法持久化对超时值的更改。有人可以分享在哪里更改超时吗?我不知道@我的应用程序的用户已确认此处显示的超时更改已为他们纠正了问题。很抱歉我延迟返回此。。。但我很高兴地报告,设置超时(在我的代码中这是一件简单的事情,我本来只是做错了)对我也很有用,再次感谢!感谢您的示例代码和对“任务已取消”问题的解释。这周我开始看到这种情况。在不同地方多次尝试失败后,我决定搜索SO并找到您的解决方案。我几分钟前开始上传,已经看到02:43和06:18的响应延迟。默认值