私はリアルタイムでデータベースにプッシュされた読み取り値を更新するWebアプリケーションを作成していますので、ユーザーが取得するたびにメソッドをバックグラウンドで実行する必要がありますページ。データはユーザー固有のものなので、バックグラウンドスレッドを追加するだけでは役に立ちません。しかし、難しい部分は、私はボタンプレス上でスレッドを止めることができなければならないということです。そして、別のデータを使ってすぐにそれをやり直してください。私はこのように少し見えeventlet gunicorn、フラスコ-socketioでソリューションを作成しようとした:flask-socketioとeventletを使用して各ユーザーに固有のデータを更新する
@socketio.on('update', namespace='/update')
def make_thread(*args):
thread = Thread(target=update(args)
thread.daemon = True
thread.start()
def update(*args):
while True:
//code that keeps running to query changes
socket.emit('update_reading', reading)
time.sleep(10)
私の問題は、コードが動作し、それがフロントエンドを更新しない間、私があるように見えることができないということです特定のユーザーのためにこのスレッドを作成する方法を正確に把握することができます(必要な場合)。そして、別のソケットメソッドからスレッドを停止し、その代わりに新しいスレッドメソッドを開始する方法。
あなたはそのユーザーを特定する方法がありますか?たとえば、セッションにユーザー名またはIDがありますか? – Miguel
'thread = Thread(...)'の前にスレッドを作成する必要性を検証しますか? – temoto
@Miguel私はユーザーを識別するために使用するセッション内のユーザーIDを持っています。これは、私が使用しているmongodbバックエンドからのObjectIDです。 –