Я хотел бы установить размер пула sqlalchemy, отличный от значения по умолчанию.
У меня есть приложение для колб.Я устанавливаю конфигурацию из файла, используя app.config.from_pyfile ('config.py')
Прямо перед инициализацией базы данных я сбросил конфигурацию, и она включает:
'SQLALCHEMY_DATABASE_URI': 'mysql://readonly:password@localhost/xyz',
'SQLALCHEMY_ECHO': False,
'SQLALCHEMY_MAX_OVERFLOW': 0,
'SQLALCHEMY_POOL_SIZE': 1,
'SQLALCHEMY_RECORD_QUERIES': False,
'SQLALCHEMY_TRACK_MODIFICATIONS': False,
Сразу после загрузки конфигурации и выполнения этого дампа мы вызываем некоторый код, например:
db: SQLAlchemy = SQLAlchemy()
db.init_app(app)
Я запускаю это на apache с mod_python с одним процессом и одним потоком.Я использую это в httpd.conf
WSGIDaemonProcess browse user=busybody group=busybody processes=1 threads=1 lang='en_US.UTF-8' locale='en_US.UTF-8' python-home=/users/x/virtualenvs/browse-wfalcMKM home=/users/x/browse
WSGIScriptAlias /abs /users/e-prints/browse/wsgi.py/abs
Затем я забиваю это осадой и 100 одновременными соединениями.
Я получаю 20 процессов для пользователя «только для чтения» в mysqlШОУ ПРОЦЕССЛИСТ;Я ожидаю увидеть 1 процесс для пользователя «только для чтения» в SHOW PROCESSLIST;
Нет других приложений, использующих пользователя «только для чтения», и когда я останавливаю приложение httpd / python / flask, их ноль'readonly' пользователи в SHOW PROCESSLIST;
Я основываю свои надежды на настройке вещей так, как я пытаюсь из документов здесь: http://flask -sqlalchemy.pocoo.org / 2.3 /config /
Я использую Python 3.6 и MySQL 5.1.73.Похоже, у меня Flask_SQLAlchemy 2.3.2, mysqlclient 1.3.13 и SQLAlchemy 1.2.12.Это на Linux.Apache с mod-wsgi 4.5.15.
Обновление:
Я добавил отладку, и я вижу, что db.engine.pool.size настроен на то, что я ожидаю.
Я не уверен, как это должно работать, но я вижу, что я получаю разные объекты пула в разных запросах:
[Mon Oct 29 12:17:25 2018] - ERROR: "pool size = 1"
[Mon Oct 29 12:17:25 2018] - ERROR: "engine object = Engine(mysql://browse_readonly:***@localhost/arXiv?charset=utf8)"
[Mon Oct 29 12:17:25 2018] - ERROR: "pool object = <sqlalchemy.pool.QueuePool object at 0x7f2342b97da0>"
[Mon Oct 29 12:17:35 2018] - ERROR: "pool size = 1"
[Mon Oct 29 12:17:35 2018] - ERROR: "engine object = Engine(mysql://browse_readonly:***@localhost/arXiv?charset=utf8)"
[Mon Oct 29 12:17:35 2018] - ERROR: "pool object = "sqlalchemy.pool.QueuePool object at 0x7f2342b39400>"
Обновление 2: я используюapache и mod-python.Я добавил это к основному вопросу вопроса выше.Обновление 3: Моя ошибка, мы используем mod-wsgi.