def load_time_series(self, market_data_request): #if(BBGLowLevelTemplate._session is None): session = self.start_bloomberg_session() #else: # session = BBGLowLevelTemplate._session try: # if can't open the session, kill existing one # then try reopen (up to 5 times...) i = 0 while i < 5: if session is not None: if not session.openService("//blp/refdata"): self.logger.info("Try reopening Bloomberg session... try " + str(i)) self.kill_session(session) # need to forcibly kill_session since can't always reopen session = self.start_bloomberg_session() if session is not None: if session.openService("//blp/refdata"): i = 6 else: self.logger.info("Try opening Bloomberg session... try " + str(i)) session = self.start_bloomberg_session() i = i + 1 # give error if still doesn't work after several tries.. if not session.openService("//blp/refdata"): self.logger.error("Failed to open //blp/refdata") return self.logger.info("Creating request...") eventQueue = blpapi.EventQueue() # eventQueue = None # create a request from blpapi import CorrelationId cid = CorrelationId() options = self.fill_options(market_data_request) self.send_bar_request(session, eventQueue, options, cid) self.logger.info("Waiting for data to be returned...") data_frame = self.event_loop(session) finally: # stop the session (will fail if NoneType) try: session.stop() except: pass return data_frame
def load_time_series(self, md_request): # if(BBGLowLevelTemplate._session is None): logger = LoggerManager().getLogger(__name__) session = self.start_bloomberg_session() # else: # session = BBGLowLevelTemplate._session def download_data_frame(sess, eventQ, opt, ci): if opt.security is not None: self.send_bar_request(sess, eventQ, opt, ci) logger.info("Waiting for data to be returned...") return self.event_loop(sess) else: logger.warn("No ticker or field specified!") return None try: # if can't open the session, kill existing one # then try reopen (up to 5 times...) i = 0 while i < 5: if session is not None: if not session.openService("//blp/refdata"): logger.info("Try reopening Bloomberg session... try " + str(i)) self.kill_session( session) # need to forcibly kill_session since # can't always reopen session = self.start_bloomberg_session() if session is not None: if session.openService("//blp/refdata"): i = 6 else: logger.info("Try opening Bloomberg session... try " + str(i)) session = self.start_bloomberg_session() i = i + 1 # Give error if still doesn't work after several tries.. if not session.openService("//blp/refdata"): logger.error("Failed to open //blp/refdata") return logger.info("Creating request...") eventQueue = blpapi.EventQueue() # eventQueue = None # Create a request from blpapi import CorrelationId options = self.fill_options(md_request) # In some instances we might split the options if need to have # different overrides if isinstance(options, list): data_frame_list = [] for op in options: cid = CorrelationId() data_frame_list.append( download_data_frame(session, eventQueue, op, cid)) data_frame = Calculations().join(data_frame_list) else: cid = CorrelationId() data_frame = download_data_frame(session, eventQueue, options, cid) finally: # stop the session (will fail if NoneType) try: session.stop() except: pass return data_frame