Flask SQLAlchemy Connection Pooling 不起作用



我有以下情况:

config.py

SQLALCHEMY_DATABASE_URI = 'postgresql://a:a@localhost/a'
SQLALCHEMY_POOL_SIZE = 5
SQLALCHEMY_TRACK_MODIFICATIONS = True

models.py

class account_map(db.Model):
    __tablename__ = 'account_map'
    account_id = db.Column(db.Integer, primary_key=True)
    account_key_type = db.Column(db.Text, nullable=False)
    account_key_value = db.Column(db.Text, nullable=False)

app.py

from flask import Flask, jsonify
from flask_sqlalchemy import SQLAlchemy
import models
app = Flask(__name__)
app.config.from_pyfile('config.py')
db = SQLAlchemy(app)
@app.route('/account/<int:account_id>', methods=['GET'])
def get_account(account_id):
    account = models.account_map.query.get(account_id)
    if account:
        return jsonify(account.as_dict())
    return jsonify(error=404, message=str("Not found"), timestamp=datetime.timestamp(datetime.utcnow())), 404

if __name__ == '__main__':
   app.run()

要检查打开的连接数,请执行以下操作:

 SELECT * FROM pg_stat_activity where datname = '...';

无论执行多少个请求(我使用过 JMeter 和 25 个并发用户),数据库中只有一个连接打开,吞吐量几乎与我只使用一个线程相同。

更新

我发现为什么我没有看到很多连接是Postgresql:默认情况下,Flask是单线程的。需要指定 threaded = True 启动应用程序时。SQLAlchemy 连接池正在工作。

最新更新