httpFlaskService.py (1019B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\script\net\httpFlaskService.py 2 from threading import Lock 3 from werkzeug.wsgi import pop_path_info, peek_path_info 4 5 class ServerPageSubDispatcher(object): 6 7 def __init__(self, default_app, create_app): 8 self.default_app = default_app 9 self.create_app = create_app 10 self.lock = Lock() 11 self.instances = {} 12 13 def get_application(self, prefix): 14 with self.lock: 15 app = self.instances.get(prefix) 16 if app is None: 17 app = self.create_app(prefix) 18 self.instances[prefix] = app 19 return app 20 21 def __call__(self, environ, start_response): 22 app = self.get_application(peek_path_info(environ)) 23 if app is not None: 24 pop_path_info(environ) 25 else: 26 app = self.default_app 27 return app(environ, start_response) 28 29 30 class ServerPageApplication(object): 31 32 def __init__(self): 33 pass