5

ドキュメントhttp://flask-kvsession.readthedocs.org/en/0.3.1/ atから、cleanup_sessions()期限切れのセッションをクリーンアップするためにこのメソッドを定期的に呼び出す必要があると書かれています。

アプリケーションをクリーンアップしないと、アプリケーションの存続期間中にセッション メモリの使用量が増加するということですか?

定期的にクリーンアップしないと、どのような悪影響がありますか?

アプリケーション内で定期的なクリーンアップをスケジュールする良い方法は何ですか?

Redis をストレージ バックエンドとして使用して、有効期限を自動的に設定できますか?

4

3 に答える 3

2

「after_request」または「before_request」を登録して、定期的にクリーンアップを処理できます。

from flask import Flask

from flask.ext.kvsession import KVSessionExtension
from simplekv.db.sql import SQLAlchemyStore
from sqlalchemy import create_engine, MetaData

# init app
app = Flask(__name__)

# init Flask-KVSession
engine = create_engine('mysql+pymysql://user:password@localhost/kvsession_db')
metadata = MetaData(bind=engine)
store = SQLAlchemyStore(engine, metadata, 'kvsession_table')
metadata.create_all()
kvsession_extension = KVSessionExtension(store, app)

# perdiocally cleanup expired sessions
import time
# do cleanup per day. You may store this value in app.config
SESSION_CLEANUP_INTERVAL = 60 * 60 * 24
deadline = None
@app.after_request
def cleanup_expired_sessions():
    global SESSION_CLEANUP_INTERVAL, deadline
    if deadline is None:
        kvsession_extension.cleanup_sessions(app)
        deadline = time.time() = SESSION_CLEANUP_INTERVAL
    else:
        if time.time() >= deadline:
            # time to do cleanup
            kvsession_extension.cleanup(app)
            # update deadline
            deadline = time.time() + SESSION_CLEANUP_INTERVAL
于 2016-03-30T07:35:33.087 に答える
0

Redis を使用できますが、期限切れのセッションは引き続き保存されます。期限切れのセッションを保存すると、ディスク スペースや RAM が無駄になります。これは、Redis では特に問題です。

クリーンアップをスケジュールする限り、実行する cron または upstart を使用して毎日のスクリプトを作成するだけcleanup_sessionsです。または、キーの有効期限を設定するように変更することもできsimplekvます: https://github.com/mbr/simplekv/blob/master/simplekv/memory/redisstore.py

于 2013-04-24T21:26:33.333 に答える