0

djangoセッションをディスクに保存しています。各セッションを実行し、特定のキーを削除して残りを保持する必要がある特定のケースがあります。したがって、キャッシュ全体をクリアすることはできません。セッションがdbにあるときに、個々のセッションを繰り返すことができました。しかし、セッションストアで私は立ち往生しています。私がする必要があることはこれに似ています:

    sessions=sessionstore.all()
    for session in sessions:
      session.pop('key1')
      session.pop('key2')
      if session lastmodified before some time:
        del session
4

1 に答える 1

1

django.contrib.sessions.backends.file の clear_expired メソッドで反復がどのように行われるかを見てください:

@classmethod
def clear_expired(cls):
    storage_path = cls._get_storage_path()
    file_prefix = settings.SESSION_COOKIE_NAME

    for session_file in os.listdir(storage_path):
        if not session_file.startswith(file_prefix):
            continue
        session_key = session_file[len(file_prefix):]
        session = cls(session_key)
        # When an expired session is loaded, its file is removed, and a
        # new file is immediately created. Prevent this by disabling
        # the create() method.
        session.create = lambda: None
        session.load()
于 2013-01-02T17:32:45.490 に答える