aboutsummaryrefslogtreecommitdiffstats
path: root/python/bbg_helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/bbg_helpers.py')
-rw-r--r--python/bbg_helpers.py51
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):