diff options
Diffstat (limited to 'python/bbg_helpers.py')
| -rw-r--r-- | python/bbg_helpers.py | 51 |
1 files changed, 28 insertions, 23 deletions
diff --git a/python/bbg_helpers.py b/python/bbg_helpers.py index 818cee60..840ecc33 100644 --- a/python/bbg_helpers.py +++ b/python/bbg_helpers.py @@ -1,23 +1,32 @@ import blpapi import sys import pandas as pd - +from contextlib import contextmanager +import logging # Fill SessionOptions -def init_bbg_session(ipaddr, port=8184): + +logger = logging.getLogger(__name__) + +@contextmanager +def init_bbg_session(ipaddr, port=8194): sessionOptions = blpapi.SessionOptions() sessionOptions.setServerHost(ipaddr) sessionOptions.setServerPort(port) session = blpapi.Session(sessionOptions) - # Start a Session - if not session.start(): - print "Failed to start session." - sys.exit(0) + try: + # Start a Session + if not session.start(): + raise NameError("Failed to start session") - if not session.openService("//blp/refdata"): - print "Failed to open //blp/refdata" - sys.exit(0) - return session + if not session.openService("//blp/refdata"): + raise NameError("Failed to open //blp/refdata") + yield session + except NameError as e: + logger.error(e.message) + raise + finally: + session.stop() def retreive_data(session, securities, fields, settle_date=None): refDataService = session.getService("//blp/refdata") @@ -34,20 +43,16 @@ def retreive_data(session, securities, fields, settle_date=None): session.sendRequest(request) data = [] - try: - # Process received events - while(True): - # We provide timeout to give the chance to Ctrl+C handling: - ev = session.nextEvent(500) - if ev.eventType() in [blpapi.Event.PARTIAL_RESPONSE, blpapi.Event.RESPONSE]: - for msg in ev: - data.append(msg) + # Process received events + while(True): + # We provide timeout to give the chance to Ctrl+C handling: + ev = session.nextEvent(500) + if ev.eventType() in [blpapi.Event.PARTIAL_RESPONSE, blpapi.Event.RESPONSE]: + for msg in ev: + data.append(msg) # Response completely received, so we could exit - if ev.eventType() == blpapi.Event.RESPONSE: - break - finally: - # Stop the session - session.stop() + if ev.eventType() == blpapi.Event.RESPONSE: + break return data def process_msgs(data): |
