は、Google App Engineの中の私webapp2をアプリケーションに次のコードを考えてみましょアプリ。理解グローバルオブジェクトの永続性は、
私はすべてのリクエストが新しい地球環境だったPHPの世界から来ています。私がWebApp2のwsgi設定を使用しているため、Pythonは各リクエストで新しいプロセスを開始しません。私はCGIの設定を使用していた場合は、他の一方で、地球環境は...(ない場合は、私を修正してください)
上記と仮定が正しい... PHPのように、毎回再インスタンスでしょう
- 要求の存続期間中だけ永続化するグローバル変数が必要なシナリオは、どのように処理できますか?私はRequestHandlerクラスにインスタンス変数を置くことができますが、メッセージオブジェクトの格納などのためにグローバル変数を使用するユーティリティモジュールのようなものについてはどうでしょうか?
- すべての変数をリセットする、または環境の再インスタンス化を強制する技術はありますか?
- グローバル環境が無期限に持続するか、またはある時点でそれ自体がリセットされますか?
- このGAE固有のものも、wsgiグローバル持続性もどのサーバーシナリオでも同じですか?
EDIT:は
ここで使用した試みだのThreadLocal:
count = 0
mydata = threading.local()
mydata.count = 0
class MyHandler(webapp2.RequestHandler):
def get(self):
global count
count = count + 1
print count
mydata.count = mydata.count + 1
print mydata.count
これらはまた、増分は全体の
データストア以外でグローバルデータを保存しようとする具体的な理由はありますか?あなたがしようとしているものは、[シャードカウンター](http://code.google.com/appengine/articles/sharding_counters.html)で簡単に達成できるようです。 –
@ Kevin-そのカウント変数は単なる例であり、実際のケースはまったく別のものです。アプリケーションドメイン内のグローバルスコープを理解しようとしています。 – Yarin
関連[なぜPylonsはthreading.localの代わりにStackedObjectProxiesを使用しますか?](http://stackoverflow.com/q/1686768/95735) –