0

对于在glowscript.org 上找到的应用程序,我在将GAE 从Python 2.5 更新到Python 2.7 时遇到了一个严重问题。我目前正在使用 GAE Launcher 1.7.6 在 Windows 上进行本地测试。

用户可以创建名称包含空格的文件夹,应用程序将空格转换为“%20”以形成数据存储区的密钥;这些文件夹中的文件名也是如此。在glowscript.org 上存在相当数量的用户,他们的数据依赖于这些键。

在尝试本地调试 Python 2.7 版本中的一些奇怪问题时,很明显 GAE 数据存储机制发生了重大变化。假设用户创建了一个名为“Test Cases”的文件夹。与 gloomscript.org 一致,此文件夹名称转换为“Test%20Cases”并用作 PUT 操作中的键:

folder = 'Test%20Cases' f = Folder( parent = username, key_name = folder, public=True ) # Folder 继承自 db.Model f.put()

在使用 Python 2.7 和启动器 1.7.6 运行时,我在日志中看到的是 '%20' 已转换回空格:

“PUT /api/user/test0324k/folder/Test Cases HTTP/1.1” 200 -

当我使用 Python 2.5 和 GAE Launcher 1.7.2 执行相同的操作(本地)时,这就是我在日志中看到的内容:

“PUT /api/user/test0324k/folder/Test%20Cases HTTP/1.1” 200 -

如果我部署到网络上,用户会收到错误,因为他们的数据有包含“%20”的键,现在无法访问这些键。我不能继续使用 Python 2.5 版本,因为它已经被弃用并且很快就会消失。在不破坏许多人的工作的情况下,我能做些什么来继续前进?

4

1 回答 1

0

“我不能继续使用 Python 2.5 版本,因为它已经被弃用,很快就会消失。”

我们于 2013 年 3 月 8 日在一篇文中宣布弃用 Python 2.5 ,其中引用了我们的弃用政策(https://developers.google.com/appengine/terms的第 7.2 节)。我建议阅读它。该部分很简短,而且中肯。

您在我们的 Python 2.5 和 2.7 堆栈之间看到的任何意外变化都值得报告。请通过正常渠道提交报告。(您几乎可以复制/粘贴您在此处编写的内容。)

也就是说(这是我个人的观点,而不是谷歌的观点)制作一个带有 %20 的密钥,然后将其放入一个 url 而不转义它是非常薄的冰。

于 2013-03-25T03:44:47.783 回答