-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtests_pre_start.py
43 lines (32 loc) · 990 Bytes
/
tests_pre_start.py
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
import asyncio
import logging
import nest_asyncio
from sqlmodel import select
from tenacity import after_log, before_log, retry, stop_after_attempt, wait_fixed
from db import SessionBuilder
from models import Vendor
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
max_tries = 60 * 1 # 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),
)
async def init() -> None:
try:
# Try to create session to check if DB is awake
async with SessionBuilder() as session:
await session.execute(select(Vendor))
except Exception as e:
logger.error(e)
raise e
async def main() -> None:
logger.info("Initializing service")
await init()
logger.info("Service finished initializing")
if __name__ == "__main__":
nest_asyncio.apply()
asyncio.run(main())