mirror of
https://github.com/RYDE-WORK/full-stack-fastapi-template.git
synced 2026-01-26 00:33:32 +08:00
* ♻️ Refactor backend, update DB session handling * ✨ Add mypy config and plugins * ➕ Use Python-jose instead of PyJWT as it has some extra functionalities and features * ✨ Add/update scripts for test, lint, format * 🔧 Update lint and format configs * 🎨 Update import format, comments, and types * 🎨 Add types to config * ✨ Add types for all the code, and small fixes * 🎨 Use global imports to simplify exploring with Jupyter * ♻️ Import schemas and models, instead of each class * 🚚 Rename db_session to db for simplicity * 📌 Update dependencies installation for testing
38 lines
815 B
Python
38 lines
815 B
Python
import logging
|
|
|
|
from tenacity import after_log, before_log, retry, stop_after_attempt, wait_fixed
|
|
|
|
from app.db.session import SessionLocal
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
max_tries = 60 * 5 # 5 minutes
|
|
wait_seconds = 1
|
|
|
|
|
|
@retry(
|
|
stop=stop_after_attempt(max_tries),
|
|
wait=wait_fixed(wait_seconds),
|
|
before=before_log(logger, logging.INFO),
|
|
after=after_log(logger, logging.WARN),
|
|
)
|
|
def init() -> None:
|
|
try:
|
|
db = SessionLocal()
|
|
# Try to create session to check if DB is awake
|
|
db.execute("SELECT 1")
|
|
except Exception as e:
|
|
logger.error(e)
|
|
raise e
|
|
|
|
|
|
def main() -> None:
|
|
logger.info("Initializing service")
|
|
init()
|
|
logger.info("Service finished initializing")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|