2015-10-02 12 views
29

私はgsession間での機能と目的の違いを理解しようとしています。どちらもセッションデータを 'ハングする'オブジェクトですが、そうですか?そうであれば、どのような違いがあり、どんなケースでどちらを使うべきですか?フラスコ: 'G' 対 'セッション'?

答えて

40

いいえ、gではありません。セッションデータをハングするオブジェクトです。 g要求間でデータが保持されません。

sessionはあなたの特定のブラウザあたりのデータを格納する場所を提供します。特定のブラウザを使用しているFlaskアプリのユーザーが、より多くのリクエストを返すと、セッションデータはそれらのリクエストにまたがって持ち越されます。一方

gは要求サイクル内のコードベースの異なる部分の間で共有されるデータです。 gbefore_requestフックの間に設定することができ、teardown_request期にまだ利用可能であり、要求が行われ、クライアントに送信されると、gはクリアされます。

+7

だから、 'session'は(?クッキーに基づいて)データのクライアントごとに 'で、' G'は、要求ごとのデータのですか? –

+5

@AvivCohn:正確に。 (あなたは1を別の、これが重要になり呼び出す*巣*フラスコのアプリにした場合)G' 'の利点は、スレッドセーフで、そしてあなたの現在のアプリケーションに固有のもので、それはあなたの要求のすべてにわたって存在していることです。つまり、あなたのテンプレートで同じユーザーや接続にアクセスし、まだ各呼び出しに沿って、それを渡すことなく、ティアダウンフックで利用できる持って、その後、ユーザーオブジェクトまたは 'before_request'フックを使用して、データベース接続を設定することができます。 –

関連する問題