This file contains application settings and configuration.
It serves as a central location for managing various settings of the application.
You can define and customize settings specific to your application, such as database URLs,
API keys, environment variables, and more.
LogLevel
Bases: str
, enum.Enum
Possible log levels.
Source code in hestia/settings.py
20
21
22
23
24
25
26
27
28 | class LogLevel(str, enum.Enum): # noqa: WPS600
"""Possible log levels."""
NOTSET = "NOTSET"
DEBUG = "DEBUG"
INFO = "INFO"
WARNING = "WARNING"
ERROR = "ERROR"
FATAL = "FATAL"
|
Settings
Bases: BaseSettings
Application settings.
These parameters can be configured
with environment variables.
Source code in hestia/settings.py
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158 | class Settings(BaseSettings):
"""
Application settings.
These parameters can be configured
with environment variables.
"""
host: str = "0.0.0.0"
port: int = 8000
# quantity of workers for uvicorn
workers_count: int = 1
# Enable uvicorn reloading
reload: bool = False
# Current environment
environment: str = "dev"
log_level: LogLevel = LogLevel.INFO
# Variables for the database
db_host: str = "hestia-db"
db_port: int = 5432
db_user: str = "hestia"
db_pass: str = "pass1234"
db_base: str = "hestia"
db_echo: bool = False
# Variables for Redis
redis_host: str = "hestia-redis"
redis_port: int = 6379
redis_user: Optional[str] = None
redis_pass: Optional[str] = None
redis_base: Optional[int] = None
# Variables for RabbitMQ
rabbit_host: str = "hestia-rmq"
rabbit_port: int = 5672
rabbit_user: str = "hestia"
rabbit_pass: str = "pass1234"
rabbit_vhost: str = "/"
rabbit_pool_size: int = 2
rabbit_channel_pool_size: int = 10
# This variable is used to define
# multiproc_dir. It's required for [uvi|guni]corn projects.
prometheus_dir: Path = TEMP_DIR / "prom"
# Sentry's configuration.
sentry_dsn: Optional[str] = None
sentry_sample_rate: float = 1.0
# Grpc endpoint for opentelemetry.
# E.G. http://localhost:4317
opentelemetry_endpoint: Optional[str] = None
@property
def db_url(self) -> URL:
"""
Assemble database URL from settings.
:return: database URL.
"""
return URL.build(
scheme="postgresql+asyncpg",
host=self.db_host,
port=self.db_port,
user=self.db_user,
password=self.db_pass,
path=f"/{self.db_base}",
)
@property
def admin_db_url(self) -> URL:
"""
Assemble database URL from settings for admin page.
:return: database URL.
"""
return URL.build(
scheme="postgresql+psycopg",
host=self.db_host,
port=self.db_port,
user=self.db_user,
password=self.db_pass,
path=f"/{self.db_base}",
)
@property
def redis_url(self) -> URL:
"""
Assemble REDIS URL from settings.
:return: redis URL.
"""
path = ""
if self.redis_base is not None:
path = f"/{self.redis_base}"
return URL.build(
scheme="redis",
host=self.redis_host,
port=self.redis_port,
user=self.redis_user,
password=self.redis_pass,
path=path,
)
@property
def rabbit_url(self) -> URL:
"""
Assemble RabbitMQ URL from settings.
:return: rabbit URL.
"""
return URL.build(
scheme="amqp",
host=self.rabbit_host,
port=self.rabbit_port,
user=self.rabbit_user,
password=self.rabbit_pass,
path=self.rabbit_vhost,
)
class Config:
env_file = ".env"
env_prefix = "HESTIA_"
env_file_encoding = "utf-8"
|
admin_db_url: URL
property
Assemble database URL from settings for admin page.
Returns:
Type |
Description |
|
database URL. |
db_url: URL
property
Assemble database URL from settings.
Returns:
Type |
Description |
|
database URL. |
rabbit_url: URL
property
Assemble RabbitMQ URL from settings.
Returns:
Type |
Description |
|
rabbit URL. |
redis_url: URL
property
Assemble REDIS URL from settings.
Returns:
Type |
Description |
|
redis URL. |