def construct(self): # This is the working dir by now. sys.path.insert(0, '') config = self.master_config # if os.path.exists(config.Global.key_file) and config.Global.secure: # config.SessionFactory.exec_key = config.Global.key_file if os.path.exists(config.Global.url_file): with open(config.Global.url_file) as f: d = json.loads(f.read()) for k, v in d.iteritems(): if isinstance(v, unicode): d[k] = v.encode() if d['exec_key']: config.SessionFactory.exec_key = d['exec_key'] d['url'] = disambiguate_url(d['url'], d['location']) config.RegistrationFactory.url = d['url'] config.EngineFactory.location = d['location'] config.Kernel.exec_lines = config.Global.exec_lines self.start_mpi() # Create the underlying shell class and EngineService # shell_class = import_item(self.master_config.Global.shell_class) try: self.engine = EngineFactory(config=config, logname=self.log.name) except: self.log.error("Couldn't start the Engine", exc_info=True) self.exit(1) self.start_logging()
def init_engine(self): # This is the working dir by now. sys.path.insert(0, '') config = self.config # print config self.find_url_file() # was the url manually specified? keys = set(self.config.EngineFactory.keys()) keys = keys.union(set(self.config.RegistrationFactory.keys())) if keys.intersection(set(['ip', 'url', 'port'])): # Connection info was specified, don't wait for the file url_specified = True self.wait_for_url_file = 0 else: url_specified = False if self.wait_for_url_file and not os.path.exists(self.url_file): self.log.warn("url_file %r not found", self.url_file) self.log.warn("Waiting up to %.1f seconds for it to arrive.", self.wait_for_url_file) tic = time.time() while not os.path.exists(self.url_file) and (time.time()-tic < self.wait_for_url_file): # wait for url_file to exist, or until time limit time.sleep(0.1) if os.path.exists(self.url_file): self.load_connector_file() elif not url_specified: self.log.fatal("Fatal: url file never arrived: %s", self.url_file) self.exit(1) exec_lines = [] for app in ('IPKernelApp', 'InteractiveShellApp'): if '%s.exec_lines' in config: exec_lines = config.IPKernelApp.exec_lines = config[app].exec_lines break exec_files = [] for app in ('IPKernelApp', 'InteractiveShellApp'): if '%s.exec_files' in config: exec_files = config.IPKernelApp.exec_files = config[app].exec_files break if self.startup_script: exec_files.append(self.startup_script) if self.startup_command: exec_lines.append(self.startup_command) # Create the underlying shell class and Engine # shell_class = import_item(self.master_config.Global.shell_class) # print self.config try: self.engine = EngineFactory(config=config, log=self.log, connection_info=self.connection_info, ) except: self.log.error("Couldn't start the Engine", exc_info=True) self.exit(1)
def init_engine(self): # This is the working dir by now. sys.path.insert(0, '') config = self.config # print config self.find_url_file() # was the url manually specified? keys = set(self.config.EngineFactory.keys()) keys = keys.union(set(self.config.RegistrationFactory.keys())) if keys.intersection(set(['ip', 'url', 'port'])): # Connection info was specified, don't wait for the file url_specified = True self.wait_for_url_file = 0 else: url_specified = False if self.wait_for_url_file and not os.path.exists(self.url_file): self.log.warn("url_file %r not found" % self.url_file) self.log.warn("Waiting up to %.1f seconds for it to arrive." % self.wait_for_url_file) tic = time.time() while not os.path.exists(self.url_file) and ( time.time() - tic < self.wait_for_url_file): # wait for url_file to exist, for up to 10 seconds time.sleep(0.1) if os.path.exists(self.url_file): self.load_connector_file() elif not url_specified: self.log.critical("Fatal: url file never arrived: %s" % self.url_file) self.exit(1) try: exec_lines = config.Kernel.exec_lines except AttributeError: config.Kernel.exec_lines = [] exec_lines = config.Kernel.exec_lines if self.startup_script: enc = sys.getfilesystemencoding() or 'utf8' cmd = "execfile(%r)" % self.startup_script.encode(enc) exec_lines.append(cmd) if self.startup_command: exec_lines.append(self.startup_command) # Create the underlying shell class and Engine # shell_class = import_item(self.master_config.Global.shell_class) # print self.config try: self.engine = EngineFactory(config=config, log=self.log) except: self.log.error("Couldn't start the Engine", exc_info=True) self.exit(1)