def __init__(self, configuration=None, assembly=None): super(Runtime, self).__init__(assembly=assembly) self.mules = {} self.postforks = [] self.signals = {} uwsgi.post_fork_hook = self.run_postforks for key in ('yaml', 'yml', 'json'): filename = uwsgi.opt.get(key) if filename: self.configure(filename) break else: raise RuntimeError() self.deploy() self.startup() self.dispatcher = MountDispatcher() for unit in self.assembly.collate(Mount): self.dispatcher.mount(unit) self._register_services(self.dispatcher) name = self.parameters.get('name') if name: self.register_ipython_console(name)
class Runtime(Runtime): def __init__(self, configuration=None, assembly=None): super(Runtime, self).__init__(assembly=assembly) for key in ('yaml', 'yml', 'json'): filename = uwsgi.opt.get(key) if filename: self.configure(filename) break else: raise RuntimeError() self.deploy() self.startup() self.dispatcher = MountDispatcher() for unit in self.assembly.collate(Mount): self.dispatcher.mount(unit) name = self.parameters.get('name') if name: self.register_ipython_console(name) def __call__(self, environ, start_response): return self.dispatcher.dispatch(environ, start_response) def register_ipython_console(self, name): trigger = IPYTHON_CONSOLE_TRIGGER % name os.close(os.open(trigger, os.O_WRONLY|os.O_CREAT, 0666)) uwsgi.register_signal(IPYTHON_CONSOLE_SIGNAL, 'mule', activate_ipython_console) uwsgi.add_file_monitor(IPYTHON_CONSOLE_SIGNAL, trigger) def reload(self): uwsgi.reload()
def __init__(self, address, configuration=None, assembly=None): super(Runtime, self).__init__(configuration, assembly) self.deploy() self.startup() self.dispatcher = MountDispatcher() for unit in self.assembly.collate(Mount): self.dispatcher.mount(unit) wsgi = self.configuration.get('wsgi') if wsgi and 'static-map' in wsgi: map = wsgi['static-map'].split('=') self.dispatcher = SharedDataMiddleware(self.dispatcher, { map[0]: os.path.abspath(map[1]) }, cache=False) self.server = WsgiServer(address, self.dispatcher) self.server.serve()
class Runtime(Runtime): def __init__(self, configuration=None, assembly=None): super(Runtime, self).__init__(assembly=assembly) self.mules = {} self.postforks = [] self.signals = {} uwsgi.post_fork_hook = self.run_postforks for key in ('yaml', 'yml', 'json'): filename = uwsgi.opt.get(key) if filename: self.configure(filename) break else: raise RuntimeError() self.deploy() self.startup() self.dispatcher = MountDispatcher() for unit in self.assembly.collate(Mount): self.dispatcher.mount(unit) self._register_services(self.dispatcher) name = self.parameters.get('name') if name: self.register_ipython_console(name) def __call__(self, environ, start_response): return self.dispatcher.dispatch(environ, start_response) @property def host(self): return uwsgi.opt['http-socket'] @property def pid(self): return uwsgi.masterpid() def get_message(self): return uwsgi.mule_get_msg() def lock(self): uwsgi.lock() def notify_mule(self, name, message): if name in self.mules: self.mules[name].send(message) else: raise ValueError(name) def register_ipython_console(self, name): trigger = IPYTHON_CONSOLE_TRIGGER % name os.close(os.open(trigger, os.O_WRONLY|os.O_CREAT, 0666)) uwsgi.register_signal(IPYTHON_CONSOLE_SIGNAL, 'mule', activate_ipython_console) uwsgi.add_file_monitor(IPYTHON_CONSOLE_SIGNAL, trigger) def register_mule(self, name, function): mule = self.mules[name] = Mule(len(self.mules) + 1, name, function) self.postforks.append(mule) def register_signal(self, name, target=None, function=None): id = len(self.signals) + 10 self.signals[id], self.signals[name] = name, id if target: uwsgi.register_signal(id, target, function) def reload(self): uwsgi.reload() def run_postforks(self): purge_context_locals() for function in self.postforks: function() def signal(self, name): uwsgi.signal(self.signals[name]) def unlock(self): uwsgi.unlock() def wait(self, signal=None): if signal: uwsgi.signal_wait(self.signals[signal])