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」という名前のフォルダーを作成するとします。このフォルダー名は、glowscript.org と一致して「Test%20Cases」に変換され、PUT 操作のキーとして使用されます。

folder = 'Test%20Cases' f = Folder( 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 -

Web にデプロイすると、データに「%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 スタックの間に見られる予期しない変更は、報告する価値があります。通常のチャネルからレポートを送信してください。(ここに書いたものをコピーして貼り付けることができます。)

そうは言っても(これは私の個人的な意見であり、Googleの意見ではありません)%20を含むキーを作成し、それをエスケープせずにURLに入れることは、非常に薄い氷を滑っています。

于 2013-03-25T03:44:47.783 に答える