File tree Expand file tree Collapse file tree 1 file changed +18
-13
lines changed
Expand file tree Collapse file tree 1 file changed +18
-13
lines changed Original file line number Diff line number Diff line change @@ -77,19 +77,24 @@ def func_name(func):
7777def get_or_create_pool (size = None , router = None ):
7878 global _pool
7979 global _pool_pid
80- _pool_lock .acquire ()
81- try :
82- if _pool_pid != os .getpid ():
83- _pool = Pool (router , [], size = size or DEFAULT_POOL_SIZE ,
84- overwrite = True )
85- # In case of Broker shutdown crash, Pool can cause 'zombie'
86- # processes.
87- mitogen .core .listen (router .broker , 'shutdown' ,
88- lambda : _pool .stop (join = False ))
89- _pool_pid = os .getpid ()
90- return _pool
91- finally :
92- _pool_lock .release ()
80+
81+ my_pid = os .getpid ()
82+ if _pool is None or my_pid != _pool_pid :
83+ # Avoid acquiring heavily contended lock if possible.
84+ _pool_lock .acquire ()
85+ try :
86+ if _pool_pid != my_pid :
87+ _pool = Pool (router , [], size = size or DEFAULT_POOL_SIZE ,
88+ overwrite = True )
89+ # In case of Broker shutdown crash, Pool can cause 'zombie'
90+ # processes.
91+ mitogen .core .listen (router .broker , 'shutdown' ,
92+ lambda : _pool .stop (join = True ))
93+ _pool_pid = os .getpid ()
94+ finally :
95+ _pool_lock .release ()
96+
97+ return _pool
9398
9499
95100def call (service_name , method_name , call_context = None , ** kwargs ):
You can’t perform that action at this time.
0 commit comments