我正在开发一个 Google 应用引擎应用程序,该应用程序必须处理一些从表单上传的较大 (<100 MB) XML 文件,这些文件将超出 GAE 的限制 - 上传文件的时间超过 30 秒,或超过 10 MB 请求大小。
我目前设想的解决方案是将文件上传到 blobstore,然后将其带入应用程序(一次 1 MB)进行解析。这也很可能超出请求的 30 秒限制,因此我想知道是否有一种好方法来处理大块 XML 文档,因为我最终可能不得不通过任务队列在 30 秒突发中完成此操作。
我目前正在将 BeautifulSoup 用于项目的其他部分,从 minidom 切换过来。有没有一种方法可以在 GAE 中很好地处理数据 block ?
最佳答案
30 秒的限制适用于代码的执行时间,并且在收到整个用户请求之前,您的代码不会开始执行 - 因此用户上传文件所花费的时间无关紧要。
也就是说,使用 blobstore 听起来确实是最好的主意。您可以使用BlobReader ,它模拟具有 blobstore 访问权限的文件,将 blob 像任何其他文件一样处理,并使用标准库(例如 BeautifulSoup)读取它。但是,如果 XML 文件足够大,则可能会面临内存不足的风险,因此您可能需要考虑基于 SAX 的方法,该方法不需要将整个文件保存在内存中。
就处理文件的执行时间限制而言,您几乎肯定希望在任务队列上执行此操作,其中限制为 10 分钟,并且您不会强制用户等待。
关于python - 使用 Blobstore 解析 App Engine 中大型 XML 文件的各个部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4522434/