Python 使用Blobstore在App Engine中解析大型XML文件的一部分?

Python 使用Blobstore在App Engine中解析大型XML文件的一部分?,python,xml,google-app-engine,beautifulsoup,blobstore,Python,Xml,Google App Engine,Beautifulsoup,Blobstore,我正在开发一个谷歌应用程序引擎应用程序,它必须处理一些更大的问题(允许您仅加载XML文档的一部分。不幸的是,Python官方文档非常稀少。可以找到更多信息并进行分析。这听起来好像App Engine不是这个项目的合适平台。30秒的限制适用于代码的执行时间,并且您的代码没有开始执行在收到整个用户请求之前,用户上传文件所需的时间是无关紧要的 也就是说,使用blobstore听起来确实是最好的主意。您可以使用,它模拟具有blobstore访问权限的文件,将blob与任何其他文件一样对待,并使用标准库(

我正在开发一个谷歌应用程序引擎应用程序,它必须处理一些更大的问题(允许您仅加载XML文档的一部分。不幸的是,Python官方文档非常稀少。可以找到更多信息并进行分析。

这听起来好像App Engine不是这个项目的合适平台。

30秒的限制适用于代码的执行时间,并且您的代码没有开始执行在收到整个用户请求之前,用户上传文件所需的时间是无关紧要的

也就是说,使用blobstore听起来确实是最好的主意。您可以使用,它模拟具有blobstore访问权限的文件,将blob与任何其他文件一样对待,并使用标准库(如BeautifulSoup)读取它如果XML文件足够大,则可能会耗尽内存,因此,您可能需要考虑基于SAX的方法,而不需要将整个文件保存在内存中。
就处理文件的执行时间限制而言,您几乎肯定希望在任务队列上执行此操作,任务队列的时间限制为10分钟,您不会强迫用户等待。

这非常容易使用pulldom,这要感谢python的魔力使一切看起来都一样。只需解析从应用程序返回的blob读取器即可像这样:

blob_reader = blobstore.BlobReader(blob_info.key())
events = pulldom.parse(blob_reader)

这正是我最喜欢python的地方,你尝试了一些东西,它通常都会起作用。

我忘了提到,用户可能只需要运行一次就可以导入他们的数据。我同意,如果我的问题是应用程序的主要功能,我会让自己的工作比他们需要的困难得多。对于一次性工作,你可能需要我想研究一下如何使用批量加载器。我的印象是只有开发人员才能使用批量加载器?我正在编写的应用程序是将最终用户的数据带入我们的应用程序。