0
私は投票システムを実装しようとしています。それはこのように動作します。ユーザーが投稿に投票すると、セッション変数に一時変数が記録されます:upvoted、starredなど。Flaskはスレッドからセッション変数を削除します
結果が一時テーブルに保存される前に、現在のユーザーが投票していない場合。ユーザーは5分で投票を変更することができます。 5分経過後、結果はスレッドを使用して永久にデータベースに書き込まれます。
私は結果がデータベースに書き込まれた後に一時的なセッション変数をクリアしたいと思います。これを達成する方法はありますか?
task.py
import threading
import time
from flask import Flask, copy_current_request_context, session
from threading import Lock
from vote import voteQuestion
app = Flask(__name__)
app.secret_key="appkey"
@app.before_first_request
def initializeTask():
@copy_current_request_context
def runTask():
while True:
voteQuestion()
time.sleep(10)
task = threading.Thread(target=runTask)
task.start()
@app.route('/vote')
def vote():
session['test'] = "This is a test"
return 'success'
@app.route("/")
def hello():
return "Hello world!"
if __name__ == "__main__":
app.run()
vote.py
from flask import session
def voteQuestion():
print('session variables', session.items())
result = session.get('test', 'not set')
print ('result ', result)
if 'test' in session:
session.pop('test', None)
print ('Running in the background')
私はすでにタイムスタンプを一時テーブルに保存しています。しかし、id 3のこのユーザーが投稿5に投票したとしよう。投票ボタンの色はオレンジなどになります。彼はポスト7に投票し、ポスト5に戻ります。現在の状況で私は一時的な投票状態を保存するためにセッション変数を使用します:upvotedなど – Erdem
なぜセッションが必要ですか?すでにテーブルに入っています。 – davidism
一時テーブルに前の票があるためです。一見すると、最後の投票のみを投票テーブルにコピーし、セッション変数を使用して一時投票状態を保存することをお勧めします。現在の状況で私のテンプレートファイルはそうです - セッションが設定されている場合、このデータを使用してください。私が仮投票テーブルのデータを使用している場合、5分の最後に、仮投票からデータを取るか、テンプレートの投票テーブルからデータを取るかを決定する必要があります。 – Erdem