Django Session存储所有会话

时间:2013-01-02 16:11:25

标签: django

我在磁盘上存储django会话。我有一个特殊的情况,我需要经历每个会话并删除某些键并保留其余的。因此清除整个缓存不是一种选择。当会话在db中时,我能够迭代单个会话。但是对于会话商店,我被困住了。我需要做的是这样的:

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

1 个答案:

答案 0 :(得分: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()
相关问题