問題タブ [gae-sessions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-app-engine - SIDのみで現在のセッションを取得するにはどうすればよいですか?
セッション識別子(SID)のみを使用してセッションを取得するにはどうすればよいですか?私はgae-sessionsを使用しています。
応答の更新@DavidUnderhill:
私はあなたが提案したことをしました、しかしデバッグモードで私はこれを手に入れました:
Session: SID=None {} |
しかしそれはdb_key
文字列で埋められました。
これが私のコードです:
upload.py
user.py
存在しません。
そしてこれは私のクッキーからの私のSIDです:
"mMumLZOCq5knTg9edaSjLD + p8xsSohAQSS9vyqpgDso = 1289155992_9c2c85c6931a7d133f7e1f0b9ae25502gAJ9cQB9cQEoVQ5hY2NvdW50LmxvZ2dlZHECiFUIdXNlci5rZXlxA1UjYWd0MGIzUjBlWE4zYjNKc1pISUxDeElFVlhObGNoaTNBUXdxBFULYWNjb3VudC5rZXlxBVUnYWd0MGIzUjBlWE4zYjNKc1pISU9DeElIUVdOamIzVnVkQmkyQVF3cQZVDWFjY291bnQuZW1haWxxB1UBdHEIdYZxCS4 ="
これをJavaScriptとFlexを使用してCookieから取得し、変数としてPythonに送信します。
python - gae-sessions と nos のエラー
比較的成熟した GAE アプリに gae-sessions を追加する際に、いくつかの問題が発生しています。readme を注意深く読み、デモも確認しました。
まず、アプリに gaesesions ディレクトリを追加するだけで、nose と noise-gae を使用してテストを実行すると、次のエラーが発生します。
すべてのテストは正常に実行されるため、大きな問題ではありませんが、何かが正しくないことを示唆しています。
次に、次の 2 行のコードを追加するとします。
テストを実行すると、次のエラーが表示されます。
このエラーは、開発サーバーでは発生しません。
上記の修正に関する提案は大歓迎です。
django - App Engine / Django - GAE セッションに干渉する複数のリクエストをインターリーブする
Django を使用して App Engine で Python アプリケーションを実行しています。さらに、私は というセッション管理ライブラリを使用していgae-sessions
ます。threadsafe
が に設定されている場合は"no"
問題ありませんが、 が にthreadsafe
設定されて"yes"
いる場合、セッションが失われる問題が時々見られます。
私が見ている問題は、トレッドが有効になっている場合、GAE-Sessions ミドルウェアで複数のリクエストが時折インターリーブされることです。
gae-sessions
ライブラリ内には、変数_tls
である という変数がありthreading.local()
ます。ユーザーが Web サイトに対して http 要求を行うと、呼び出された関数process_request()
が最初に実行され、続いて現在のページの一連のカスタム html が生成され、次に呼び出された関数process_response()
が実行されます。process_request
との間の状態はprocess_response
、_tls
「スレッドセーフ」変数に記憶されます。_tls
値を出力することで、変数の一意性を確認でき_tls
ます (例: "<thread._local object at 0xfc2e8de0>"
)。
私が時折目にするのは、GAE-Sessions ミドルウェアのシングル スレッドのように見えるものです (thread_local オブジェクトのメモリ位置が同じであるという事実からシングル スレッドであると推測され、データがあるリクエストから別のリクエストのデータを上書きしているように見えます)、複数の http リクエストがインターリーブされています。User1 と User2 が同時にリクエストを行うと、次の実行順序が確認されました。
上記のシナリオでは、User2 セッションがいくつかの内部変数を踏みにじり、User1 のセッションが失われます。
だから、私の質問は次のとおりです: 1) App-Engine/Django/Python で予想されるミドルウェアの異なる要求のインターリーブですか? (または、私は完全に混乱しており、ここで何か他のことが起こっています) 2) このインターリーブはどのレベルで発生していますか (App-Engine/Django/Python)?
私はこの動作を見て非常に驚いているので、ここで何が起こっているのか/何が起こっているのかを理解したいと思っています.
python - AppEngine/Python NDB キーの順序
NDB を使用するようにコードをアップグレードした後にのみ現れた興味深い問題があります。
データベースに保存されている各セッションのキーにセッションの有効期限をエンコードするgae-sessionsを使用しています。たとえば、キーの形式は次のとおりです: 1363968220_6ea52c936f16fc557c0c03a5f276a056 ここで、最初の 10 文字はセッションの有効期限が切れたときのタイムスタンプを表します (値 1363968220 は「2013-03-22 16:03:40」をエンコードします)。
NDB にアップグレードする前は、期限切れのセッションを削除するコードが正しく機能していました。アップグレード後、コードは期限切れになっていないセッションを誤って削除します。コードは次のとおりです。
これにより、次の出力が得られます。
これらのキーが (文字列の順序付け/優先規則を使用して) 文字列として扱われる場合、削除されるキー (1363924467 で始まる) は、フィルタリング対象のキー (1363362698 で始まる) よりも小さいと見なされるべきではありません。これが正しく機能しない原因となる NDB で何が起こっているのか混乱しています。
python - gaesessions は 'current_session' 属性を見つけることができません
私はgasessionsを使用しています。実行して現在のセッションを確認しようとするとget_current_session()
、次のエラーが発生します。
すでに appengine_config.py ファイルを作成しました。これは次のとおりです。
Python インタープリターで os.urandom(64) を実行して COOKIE_KEY を作成しました。この問題に関する質問を見たことがありますが、appengine_config.py
ファイルを作成してミドルウェアを構成する必要があると書かれていますが、それは既に行われています。
OBS: GAE アプリケーションで Python27 を使用していません。
何か案は?ありがとうございました。
python - gae-sessions 'thread._local' オブジェクトには属性 'current_session' がありません
gae-sessions を機能させようとしていますが、問題が発生しています。
appengine_config.py と webapp_add_wsgi_middleware の内部にログインしましたが、呼び出されています。
libs 内にログインしましたが__init__.py
、それは実行されており、__init__
SessionMiddleware内では問題なく実行されています。__call__
my_start_response
私の問題は、2番目にセッションを実際に使用しようとすることです:
私はこれを得る:
python - appengine の gaesessions セッション ミドルウェアで pytest を使用する
を実行するpy.test --with-gae
と、次のエラーが表示されます (pytest_gae プラグインがインストールされています)。
pytest を使用して Google appengine アプリケーションをテストしています。アプリケーションは、localhost SDK で実行した場合、または GAE サーバーにデプロイした場合に正常に動作します。pytest を gaessions で動作させる方法がわかりません。
私のコードは以下の通りです:
test_handlers.py
appengine_config.py
gasessions からの関連コード:
google-app-engine - アプリ エンジンは、ユーザーのすべてのセッションを更新します
私の gae アプリケーションでは、ユーザーはアクション (何かを購入する) を実行できます。複数のデバイス/ブラウザ上のこのユーザーのすべてのセッションからのすべてのリクエストで、永続的に保存され、すぐに利用できる情報が必要です。webapp2_extras セッションを使用しています。私がこれを行うことを考えている方法は、次のいずれかです。
1) action_happened フィールドを User モデルに追加し、それを webapp2_extras.auth['user_attributes'] 構成のリストに追加して、セッションで使用できるようにします。ただし、ユーザーがすべてのセッションでログアウトしない限り、これは機能しません。
または 2) user_id_action_happened のようなユーザーごとに memcache エントリ (データストアによってバックアップ) を作成し、リクエストごとに true か false かを確認します。これは私の好みの方法です。
これを行う他の方法はありますか?