【发布时间】:2017-11-29 19:52:26
【问题描述】:
我在 flask-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
有两个端点:
读取 - 获取 id = 1 的实体并获取值
increase = 获取 id = 1 的实体并增加值
然后我想水平扩展,flask-sqlalchemy 不会在工作人员之间同步会话。所以即使我增加了工人 2 的价值,也没有办法从工人 1 那里获得实际价值
示例用户请求:
curl GET /read/ [worker-1]
1
curl GET /increase/ [worker-2]
2
curl GET /read/ [worker-1]
1
如您所见,sqlalchemy 不提供自动刷新会话状态的工具。
解决此问题的最佳方法是什么?使用新会话进行新查询?或使用session.refresh(instance)。推荐的方法是什么?
【问题讨论】:
标签: python orm sqlalchemy flask-sqlalchemy horizontal-scaling