处理大型zip上传并使用谷歌云提取

时间:2016-06-07 18:43:04

标签: google-app-engine go google-cloud-storage scorm

我正在尝试为要上传的电子学习课程(zips html / css / js / media)创建一个网站。 我正在使用谷歌应用程序引擎与谷歌云存储存储拉链和提取的课程。 我将解释我遇到的发展死胡同。

我的第一个想法是使用云存储的可恢复上传功能发送zip文件,然后使用go on app引擎读取它,解压缩文件并将它们写回云存储。 这需要一段时间来阅读和理解文档,并且完美地用于我的2MB测试zip。当我尝试使用适度的67MB拉链时失败了。从app引擎访问云存储时遇到了隐藏的限制。无论我使用的客户端有10MB / 32MB的限制。 我尝试了旧的和新的库以及blobstore。 我还研究了使用套接字创建一个支持客户端库的自定义oauth2,但却遇到了太多的死胡同。

放弃这种方法,我认为即使这意味着更多上传,也许只是在客户端(浏览器)端提取,然后上传每个文件,它自己的可恢复上传将是最有意义的。在探索了几个库后,我在浏览器中解压缩,准备上传。 我编写了我的处理程序,为上传创建了数据存储区条目,选择了上传位置并创建了所有上传网址。 在测试时,我发现需要一段时间来生成长文件列表(超过100个)。我决定自从我用来同时发出请求以后才有意义。我花了一两天才开始工作。在处理了一些奇怪的事先没有出现的CORS问题后,我把一切都搞定了。

然后当我用大(500mb)拉链/课程进行压力测试时,我开始出错。上传会失败,我发现当尝试发送300多个文件来生成上传网址时,我收到以下错误

Post http://localhost:62394: dial tcp [::1]:62394: connectex: No connection could be made because the target machine actively refused it.

现在我不知道如何诊断这个。我不知道我是否达到了限速,如果我不知道如何避免它。

这似乎是创造这个应该很简单,但它只是。

我有几个选择可以追求

  1. 尝试使用批处理操作(https://cloud.google.com/storage/docs/json_api/v1/how-tos/batch创建可恢复的上传
    • 不支持批量操作到/上传。
  2. 也许请逐个api致电请求每个网址。
  3. 通过频道(https://cloud.google.com/appengine/docs/go/channel/reference
  4. 请求发送网址
  5. 在下周或更长时间内添加重试层和后备错误处理。
  6. 尝试其他解决方案。
  7. 这应该很简单。该怎么做?

0 个答案:

没有答案