IましたフラスコSQLAlchemyの中のアプリと私がスケールするhoriontallyフラスコSQLAlchemyの水平スケーリングとスコープのセッション
@app.route('/read')
def read():
e = db.session.query(Example).get(1)
return e.value, 200
@app.route('/increase')
def increase():
e = db.session.query(Example).get(1)
e.value += 1
db.session.add(e)
db.session.commit()
return e.value, 200
2つのエンドポイントがあります:
読み取り - ID = 1となったエンティティ値
増加を取得し、私は水平にスケールする
そして、ID = 1と増加する値を持つ=取得したエンティティ、およびフラスコSQLAlchemyのは同期しないSE労働者間の争い。
ご覧のとおりcurl GET /read/ [worker-1]
1
curl GET /increase/ [worker-2]
2
curl GET /read/ [worker-1]
1
は、SQLAlchemyのは自動的にセッション状態をリフレッシュするためのツールを提供していません:だからでも、私は労働者2の値を増加させ、労働者から1
例のユーザー要求を実際の値を取得する方法はありません。
これを修正するにはどうすればよいですか?新しいクエリに新しいセッションを使用していますか?またはsession.refresh(instance)
を使用してください。これを行うにはどのような方法がありますか?
Flask-SQLAlchemyはすでにこれを行います。 – leovp
もう一つのオプションは、flask-sqlalchemy yesを使用することです。それは私がリンクしているそのページのFlaskでも勧められます。それは最も確実に問題を解決するでしょう。 – remram
私は、質問している人が既にFlask-SQLAlchemyを使用しています。 – leovp