**feat: добавлен модуль конфигурации Celery и расширены настройки приложения**
- Создан новый файл `celery_config.py` в пакете `lkeep.core`, содержащий класс для конфигурации Celery. - В файле `settings.py` добавлены новые классы `EmailSettings` и `RedisSettings` с соответствующими настройками. - Обновлён класс `Settings` для включения новых настроек: `email_settings`, `redis_settings`. - Добавлен экземпляр Celery в модуль `__init__.py` для доступа из других частей приложения.
This commit is contained in:
parent
217af1cd06
commit
7cfb2e734a
@ -5,3 +5,7 @@
|
||||
Специально для проекта "Код на салфетке"
|
||||
https://pressanybutton.ru/category/servis-na-fastapi/
|
||||
"""
|
||||
|
||||
from .celery_config import celery_app
|
||||
|
||||
__all__ = ["celery_app"]
|
||||
|
15
lkeep/core/celery_config.py
Normal file
15
lkeep/core/celery_config.py
Normal file
@ -0,0 +1,15 @@
|
||||
"""
|
||||
Проект: Lkeep
|
||||
Автор: Иван Ашихмин
|
||||
Год: 2025
|
||||
Специально для проекта "Код на салфетке"
|
||||
https://pressanybutton.ru/category/servis-na-fastapi/
|
||||
"""
|
||||
|
||||
from celery import Celery
|
||||
|
||||
from lkeep.core.settings import settings
|
||||
|
||||
celery_app = Celery(main="lkeep", broker=settings.redis_settings.redis_url, backend=settings.redis_settings.redis_url)
|
||||
|
||||
celery_app.autodiscover_tasks(packages=["lkeep.apps"])
|
@ -48,18 +48,83 @@ class DBSettings(BaseSettings):
|
||||
return f"postgresql+asyncpg://{self.db_user}:{self.db_password.get_secret_value()}@{self.db_host}:{self.db_port}/{self.db_name}"
|
||||
|
||||
|
||||
class EmailSettings(BaseSettings):
|
||||
"""
|
||||
Настройки для электронной почты.
|
||||
|
||||
:ivar email_host: Адрес SMTP-сервера.
|
||||
:type email_host: str
|
||||
:ivar email_port: Порт, используемый для подключения к SMTP-серверу.
|
||||
:type email_port: int
|
||||
:ivar email_username: Имя пользователя для аутентификации на электронной почтовом сервере.
|
||||
:type email_username: str
|
||||
:ivar email_password: Пароль пользователя, скрытый через `SecretStr` для обеспечения безопасности.
|
||||
:type email_password: SecretStr
|
||||
:model_config: Конфигурация settings, которая указывает на файл окружения и его кодировку.
|
||||
:type model_config: SettingsConfigDict
|
||||
"""
|
||||
|
||||
email_host: str
|
||||
email_port: int
|
||||
email_username: str
|
||||
email_password: SecretStr
|
||||
|
||||
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf8", extra="ignore")
|
||||
|
||||
|
||||
class RedisSettings(BaseSettings):
|
||||
"""
|
||||
Класс для настройки соединения с Redis.
|
||||
|
||||
:ivar redis_host: Хост, на котором размещается Redis-сервер.
|
||||
:type redis_host: str
|
||||
:ivar redis_port: Порт, через который происходит соединение с Redis-сервером.
|
||||
:type redis_port: int
|
||||
:ivar redis_db: Номер базы данных для использования в Redis.
|
||||
:type redis_db: int
|
||||
"""
|
||||
|
||||
redis_host: str
|
||||
redis_port: int
|
||||
redis_db: int
|
||||
|
||||
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf8", extra="ignore")
|
||||
|
||||
@property
|
||||
def redis_url(self):
|
||||
"""
|
||||
Получает URL для подключения к Redis.
|
||||
|
||||
:returns: Строка с URL для подключения к Redis в формате `redis://<хост>:<порт>/<база данных>`.
|
||||
:rtype: str
|
||||
"""
|
||||
return f"redis://{self.redis_host}:{self.redis_port}/{self.redis_db}"
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
"""
|
||||
Класс Settings используется для хранения настроек приложения.
|
||||
Класс для хранения настроек приложения.
|
||||
|
||||
:ivar db_settings: Экземпляр класса DBSettings, содержащий настройки базы данных.
|
||||
:ivar db_settings: Настройки для работы с базой данных.
|
||||
:type db_settings: DBSettings
|
||||
:ivar secret_key: Секретный ключ для шифрования
|
||||
:ivar email_settings: Настройки для отправки электронной почты.
|
||||
:type email_settings: EmailSettings
|
||||
:ivar redis_settings: Настройки для работы с Redis.
|
||||
:type redis_settings: RedisSettings
|
||||
:ivar secret_key: Секретный ключ приложения.
|
||||
:type secret_key: SecretStr
|
||||
:ivar templates_dir: Путь к директории шаблонов.
|
||||
:type templates_dir: str
|
||||
:ivar frontend_url: Адрес фронтенд-приложения.
|
||||
:type frontend_url: str
|
||||
"""
|
||||
|
||||
db_settings: DBSettings = DBSettings()
|
||||
email_settings: EmailSettings = EmailSettings()
|
||||
redis_settings: RedisSettings = RedisSettings()
|
||||
secret_key: SecretStr
|
||||
templates_dir: str = "templates"
|
||||
frontend_url: str
|
||||
|
||||
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf8", extra="ignore")
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user