mirror of
https://framagit.org/framasoft/framaspace/argos.git
synced 2025-04-28 18:02:41 +02:00
Allow defining db pool size and max overflow in the settings
This commit is contained in:
parent
43078da6a1
commit
6e408e1cf7
5 changed files with 28 additions and 5 deletions
|
@ -1,2 +1,4 @@
|
||||||
ARGOS_YAML_FILE = "my-config.yaml"
|
ARGOS_YAML_FILE = "my-config.yaml"
|
||||||
ARGOS_DATABASE_URL = "postgresql://argos:argos@localhost/argos"
|
ARGOS_DATABASE_URL = "postgresql://argos:argos@localhost/argos"
|
||||||
|
DB_POOL_SIZE = 10
|
||||||
|
DB_MAX_OVERFLOW = 20
|
|
@ -76,7 +76,19 @@ def setup_database(app):
|
||||||
logger.debug(f"Using database URL {settings.database_url}")
|
logger.debug(f"Using database URL {settings.database_url}")
|
||||||
if settings.database_url.startswith("sqlite:////tmp"):
|
if settings.database_url.startswith("sqlite:////tmp"):
|
||||||
logger.warning("Using sqlite in /tmp is not recommended for production")
|
logger.warning("Using sqlite in /tmp is not recommended for production")
|
||||||
engine = create_engine(settings.database_url, pool_size=10, max_overflow=20)
|
|
||||||
|
extra_settings = {}
|
||||||
|
if settings.db_pool_size:
|
||||||
|
extra_settings.set("pool_size", settings.db_pool_size)
|
||||||
|
|
||||||
|
if settings.db_max_overflow:
|
||||||
|
extra_settings.set("max_overflow", settings.db_max_overflow)
|
||||||
|
|
||||||
|
max_overflow=settings.db_max_overflow,
|
||||||
|
engine = create_engine(
|
||||||
|
settings.database_url,
|
||||||
|
**extra_settings
|
||||||
|
)
|
||||||
app.state.SessionLocal = sessionmaker(
|
app.state.SessionLocal = sessionmaker(
|
||||||
autocommit=False, autoflush=False, bind=engine
|
autocommit=False, autoflush=False, bind=engine
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import os
|
import os
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
from os import environ
|
from os import environ
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||||
|
@ -14,23 +15,30 @@ class Settings(BaseSettings):
|
||||||
app_env: str
|
app_env: str
|
||||||
database_url: str
|
database_url: str
|
||||||
yaml_file: str
|
yaml_file: str
|
||||||
|
db_pool_size: Optional[int]
|
||||||
|
db_max_overflow: Optional[int]
|
||||||
|
|
||||||
|
|
||||||
class DevSettings(Settings):
|
class DevSettings(Settings):
|
||||||
app_env: str = "dev"
|
app_env: str = "dev"
|
||||||
database_url: str = "sqlite:////tmp/argos.db"
|
database_url: str = "sqlite:////tmp/argos.db"
|
||||||
yaml_file: str = "config.yaml"
|
yaml_file: str = "config.yaml"
|
||||||
|
db_pool_size: Optional[int] = None
|
||||||
|
db_max_overflow: Optional[int] = None
|
||||||
|
|
||||||
|
|
||||||
class TestSettings(Settings):
|
class TestSettings(Settings):
|
||||||
app_env: str = "test"
|
app_env: str = "test"
|
||||||
yaml_file: str = "tests/config.yaml"
|
yaml_file: str = "tests/config.yaml"
|
||||||
database_url: str = "sqlite:////tmp/test-argos.db"
|
database_url: str = "sqlite:////tmp/test-argos.db"
|
||||||
|
db_pool_size: Optional[int] = None
|
||||||
|
db_max_overflow: Optional[int] = None
|
||||||
|
|
||||||
|
|
||||||
class ProdSettings(Settings):
|
class ProdSettings(Settings):
|
||||||
app_env: str = "prod"
|
app_env: str = "prod"
|
||||||
pass
|
db_pool_size: Optional[int] = 10
|
||||||
|
db_max_overflow: Optional[int] = 20
|
||||||
|
|
||||||
|
|
||||||
environments = {
|
environments = {
|
||||||
|
|
|
@ -19,7 +19,7 @@ myst_enable_extensions = ["colon_fence"]
|
||||||
|
|
||||||
templates_path = ["_templates"]
|
templates_path = ["_templates"]
|
||||||
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
|
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
|
||||||
mermaid_params = ['--theme', 'forest']
|
mermaid_params = ["--theme", "forest"]
|
||||||
|
|
||||||
html_sidebars = {
|
html_sidebars = {
|
||||||
"**": [
|
"**": [
|
||||||
|
|
|
@ -41,6 +41,7 @@ dev = [
|
||||||
"ipython>=8.16,<9",
|
"ipython>=8.16,<9",
|
||||||
"ipdb>=0.13,<0.14",
|
"ipdb>=0.13,<0.14",
|
||||||
"sphinx-autobuild",
|
"sphinx-autobuild",
|
||||||
|
"ruff==0.1.5,<1"
|
||||||
]
|
]
|
||||||
postgres = [
|
postgres = [
|
||||||
"psycopg2-binary>=2.9,<3",
|
"psycopg2-binary>=2.9,<3",
|
||||||
|
@ -73,4 +74,4 @@ testpaths = [
|
||||||
"tests",
|
"tests",
|
||||||
"argos"
|
"argos"
|
||||||
]
|
]
|
||||||
pythonpath = "."
|
pythonpath = "."
|
||||||
|
|
Loading…
Reference in a new issue