Skip to content

Commit 379aaa6

Browse files
committed
feat: add script demo & timing decorator
1 parent 3d48ecf commit 379aaa6

File tree

8 files changed

+59
-9
lines changed

8 files changed

+59
-9
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""
22
working directory: fastapi-efficient-sql/
3-
command: python -m examples.service.main
3+
command: python -m examples.service
44
"""
55
import uvicorn
66

examples/service/routers/account.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import logging
1+
from logging import getLogger
22
from typing import List
33

44
from faker import Faker
@@ -9,7 +9,7 @@
99
from examples.service.managers.demo.account import AccountMgr
1010

1111
router = APIRouter()
12-
logger = logging.getLogger(__name__)
12+
logger = getLogger(__name__)
1313

1414

1515
@router.post("/create")

examples/service/routers/basic.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
from asyncio import sleep
2-
import logging
2+
from logging import getLogger
33
from time import perf_counter
44

55
from fastapi import APIRouter, BackgroundTasks
66

77
router = APIRouter()
8-
logger = logging.getLogger(__name__)
8+
logger = getLogger(__name__)
99

1010

1111
@router.get("/ping")

examples/service/scripts/demo.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"""
2+
python -m examples.service.scripts.demo
3+
"""
4+
from asyncio import gather, run, sleep
5+
6+
from fastapi_esql import timing
7+
8+
from .. import app
9+
10+
11+
async def work(sec):
12+
print(f"starting sleep {sec}")
13+
await sleep(sec)
14+
print(f"slept {sec}")
15+
16+
17+
@timing
18+
async def main():
19+
for func in app.router.on_startup:
20+
await func()
21+
22+
await gather(work(1), work(2), work(3))
23+
24+
25+
if __name__ == "__main__":
26+
run(main())

fastapi_esql/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
11
from logging.config import dictConfig
22

3+
from .const.error import WrongParamsError
34
from .orm.base_app import AppMetaclass
45
from .orm.base_manager import BaseManager
56
from .orm.base_model import BaseModel
7+
from .utils.cursor_handler import CursorHandler
8+
from .utils.decorator import timing
69
from .utils.sqlizer import RawSQL, SQLizer
710

11+
__version__ = "0.1.0"
12+
813
__all__ = [
914
"AppMetaclass",
1015
"BaseManager",
1116
"BaseModel",
17+
"CursorHandler",
1218
"RawSQL",
1319
"SQLizer",
20+
"WrongParamsError",
21+
"timing",
1422
]
1523

1624
dictConfig({

fastapi_esql/orm/base_manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import logging
1+
from logging import getLogger
22
from typing import Any, Dict, List, Optional
33

44
from tortoise.backends.base.client import BaseDBAsyncClient
@@ -9,7 +9,7 @@
99
from ..utils.sqlizer import SQLizer
1010
from ..utils.cursor_handler import CursorHandler
1111

12-
logger = logging.getLogger(__name__)
12+
logger = getLogger(__name__)
1313

1414

1515
class BaseManager(metaclass=AppMetaclass):

fastapi_esql/utils/decorator.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from functools import wraps
2+
from logging import getLogger
3+
from time import perf_counter
4+
5+
logger = getLogger(__name__)
6+
7+
8+
def timing(func):
9+
@wraps(func)
10+
async def wrapper(*args, **kwargs):
11+
st = perf_counter()
12+
result = await func(*args, **kwargs)
13+
et = perf_counter()
14+
logger.info(f"{func.__module__}/{func.__name__} Cost {1000 * (et - st):.2f} ms")
15+
return result
16+
return wrapper

fastapi_esql/utils/sqlizer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import logging
1+
from logging import getLogger
22
from json import dumps
33
from typing import Any, Dict, List, Optional
44

55
from ..const.error import WrongParamsError
66

7-
logger = logging.getLogger(__name__)
7+
logger = getLogger(__name__)
88
# ensure the functionality of the RawSQL
99
try:
1010
from tortoise.expressions import RawSQL

0 commit comments

Comments
 (0)