1

私は今この半日をデバッグしています...誰かアイデアがありますか?

アクティブなセッションを監視するPythonスクリプトを作成しましたが、次のことがわかりました。

sessions = Session.objects.filter(expire_date__gte=datetime.now())
for session in sessions:
    data = session.get_decoded()
    id = data.get('_auth_user_id', None)
    ses = session.session_key
    if id:
        name = User.objects.get(id=id)

素敵なリストを提供します...わかりました。ただし、ユーザーがログアウトまたはログインした場合、上記のコードは変更を反映していません。元の古いリストを繰り返し続けます。

キャッシュの問題はありますか?考えないでください-memcachedを無効にし、変更はありません。ファイルとmemcacheベースのセッションストレージを試しました-奇妙な結果:上記のコードはdbベースのセッションストレージを読み取っているようです。

したがって、1.4.3の初期化は正しくないのではないかと思います。これは、環境を初期化するさまざまな方法があったように思われるためです。私は1.4を信じています。アプリに設定する環境変数DJANGO_SETTINGS_MODULE以外は何も必要ありません。

次に、これが解決しない場合は、ファイルベースのセッションストレージを使用してディレクトリをポーリングする必要があります。これは、リアルタイムで稼働しているようです:)

4

1 に答える 1

0

問題はトランザクション分離が原因です。デフォルトでは、データベースへの各接続はトランザクション内で実行されます。通常、これはビューに相当し、トランザクションミドルウェアがトランザクションの開始と終了を処理します。スタンドアロンスクリプトでは、それを自分で管理する必要があります。

于 2013-03-25T13:11:07.020 に答える