File tree Expand file tree Collapse file tree 4 files changed +45
-12
lines changed Expand file tree Collapse file tree 4 files changed +45
-12
lines changed Original file line number Diff line number Diff line change 3333 "level" : "DEBUG" ,
3434 "propagate" : False ,
3535 },
36+ "examples.service.routers.basic" : {
37+ "handlers" : ["console" ],
38+ "level" : "DEBUG" ,
39+ "propagate" : False ,
40+ },
3641 }
3742})
3843
Original file line number Diff line number Diff line change 44
55class DemoMetaclass (AppMetaclass ):
66
7- @property
8- def ro_conn (self ):
7+ def get_ro_conn (self ):
98 return Tortoise .get_connection ("demo_ro" )
109
11- @property
12- def rw_conn (self ):
10+ def get_rw_conn (self ):
1311 return Tortoise .get_connection ("demo_rw" )
Original file line number Diff line number Diff line change 1- from fastapi import APIRouter
1+ from asyncio import sleep
2+ import logging
3+ from time import perf_counter
4+
5+ from fastapi import APIRouter , BackgroundTasks
26
37router = APIRouter ()
8+ logger = logging .getLogger (__name__ )
49
510
611@router .get ("/ping" )
7- async def pong ():
12+ async def ping ():
813 return {"ping" : "pong" }
14+
15+
16+ @router .get ("/background/sleep" )
17+ async def bg_sleep (
18+ bg_tasks : BackgroundTasks ,
19+ ):
20+ t0 = perf_counter ()
21+ # This sleep represents time-consuming procedure
22+ await sleep (1 )
23+
24+ t1 = perf_counter ()
25+ async def my_sleep (sec ):
26+ await sleep (sec )
27+ logger .debug (f"slept { sec } sec" )
28+ bg_tasks .add_task (my_sleep , 1 )
29+ bg_tasks .add_task (my_sleep , 1.5 )
30+ bg_tasks .add_task (my_sleep , 2 )
31+
32+ t2 = perf_counter ()
33+ logger .debug (f"{ 1000 * (t1 - t0 ):.3f} ms, { 1000 * (t2 - t0 ):.3f} ms" )
34+ return "done"
Original file line number Diff line number Diff line change 1- from abc import abstractproperty
1+ from abc import ABCMeta
22
33
4- class AppMetaclass (type ):
4+ class AppMetaclass (ABCMeta ):
55
6- @abstractproperty
6+ @property
77 def ro_conn (self ):
88 """
99 return Tortoise.get_connection("ro_conn")
1010 """
11- raise NotImplementedError (f"{ self .__class__ .__name__ } `s property method 'ro_conn' was not implemented!" )
11+ if not getattr (self , "get_ro_conn" , None ):
12+ raise NotImplementedError (f"Method get_ro_conn() was not implemented by { self .__class__ .__name__ } !" )
13+ return self .get_ro_conn ()
1214
13- @abstractproperty
15+ @property
1416 def rw_conn (self ):
1517 """
1618 return Tortoise.get_connection("rw_conn")
1719 """
18- raise NotImplementedError (f"{ self .__class__ .__name__ } `s property method 'rw_conn' was not implemented!" )
20+ if not getattr (self , "get_rw_conn" , None ):
21+ raise NotImplementedError (f"Method get_rw_conn() was not implemented by { self .__class__ .__name__ } !" )
22+ return self .get_rw_conn ()
You can’t perform that action at this time.
0 commit comments