This repository was archived by the owner on Aug 20, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
executable file
·65 lines (58 loc) · 2.39 KB
/
app.py
File metadata and controls
executable file
·65 lines (58 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
from litestar import Litestar
from litestar.config.compression import CompressionConfig
from litestar.logging import StructLoggingConfig
from litestar.openapi import OpenAPIConfig
from litestar.openapi.plugins import ScalarRenderPlugin
from litestar.plugins.structlog import StructlogConfig, StructlogPlugin
from litestar_granian import GranianPlugin
from structlog import PrintLoggerFactory, make_filtering_bound_logger
from structlog.dev import ConsoleRenderer, set_exc_info
from structlog.processors import StackInfoRenderer, TimeStamper, add_log_level
from structlog.stdlib import PositionalArgumentsFormatter
from src import config, jwt_auth, routers, redis_user_service
from init_admin_user import main as au
from init_conversation_collections import main as cc
__author__ = "Lâm Quang Trí"
__copyright__ = "Copyright 2025, Lâm Quang Trí"
__credits__ = ["Lâm Quang Trí"]
__maintainer__ = "Lâm Quang Trí"
__email__ = "quangtri.lam.9@gmail.com"
__status__ = "Development"
async def cleanup_redis(_app):
"""Cleanup Redis connections on app shutdown"""
await redis_user_service.close()
logging_config = StructLoggingConfig(
processors=[
add_log_level,
set_exc_info,
PositionalArgumentsFormatter(),
StackInfoRenderer(),
TimeStamper(fmt="iso"),
StackInfoRenderer(),
ConsoleRenderer(),
],
wrapper_class=make_filtering_bound_logger(
10 if config.deploy_env in {"dev", "development", "develop", "local"} else 20
),
logger_factory=PrintLoggerFactory(),
cache_logger_on_first_use=True,
)
app = Litestar( # Cách chạy server: chạy litestar run và server sẽ deploy ở port 8000, không cần dùng python -m
[routers],
path=config.prefix,
on_app_init=[jwt_auth.on_app_init],
on_startup=[au, cc],
on_shutdown=[cleanup_redis],
plugins=[StructlogPlugin(StructlogConfig(logging_config)), GranianPlugin()],
# middleware=[
# LoggingMiddleware,
# ],
# cors_config=CORSMiddleware.get_cors_config(),
compression_config=CompressionConfig(backend="brotli", brotli_gzip_fallback=False),
openapi_config=OpenAPIConfig(
title="Chatbot hỗ trợ giới thiệu sản phẩm",
version="1.0.0",
description="API cho hệ thống chatbot hỗ trợ tư vấn sản phẩm điện tử sử dụng LangChain và Qdrant",
render_plugins=[ScalarRenderPlugin()],
),
)