Python 2.5和Python 2.7之间严重的GAE兼容性问题

时间:2013-03-25 01:45:57

标签: google-app-engine

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

用户可以创建名称包含空格的文件夹,应用程序会将空格转换为'%20'以形成数据存储区的键;类似地,这些文件夹中的文件名。在glowscript.org上存在相当数量的用户,其数据依赖于这些密钥。

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

folder ='Test%20Cases' f =文件夹(parent = username,key_name = folder,public = True)#文件夹继承自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版本,因为它已经被弃用并且很快就会消失。在不破坏很多人的工作的情况下,我能做些什么才能前进?

1 个答案:

答案 0 :(得分:0)

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

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

您在Python 2.5和2.7堆栈之间看到的任何意外更改都值得报告。请通过normal channels提交报告。 (你几乎可以复制/粘贴你在这里写的东西。)

那说(这是我个人的看法,而不是谷歌的),用一个%20来制作钥匙,然后把它放到一个网址而不逃避它是滑冰非常薄的冰。