python - 使用 Blobstore 解析 App Engine 中大型 XML 文件的各个部分?

标签 python xml google-app-engine beautifulsoup blobstore

我正在开发一个 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/

相关文章:

postgresql - 如何强制重启 Cloud SQL

python - GAE Python - 如何设置 cron 作业来启动后端任务

Python 在 64 位 Vista 上获得 os.environ ["ProgramFiles"] 的错误值

c# - 为什么更改 XML 架构并重新验证会导致内存泄漏?

python - 如何使用Python获取XML文件中child->child->child->child的内容

java - 无法使用 XSLT 1.0 更新 XML 节点属性

在云中执行 Java 代码

python - python中 Selenium 代码中xpath中的语法错误

Python f.read() 和 Octave fread()。 => 读取显示相同值的二进制文件

python - 当列中包含 '?' 时,Pandas 无法选择