彭博API请求超时-Python



我是Bloomberg终端用户,无法与Python Bloomberg API建立连接。

我能够像彭博帮助页面上描述的那样安装blpapi软件包,并尝试导入xbbg软件包以获取一些数据。

https://www.bloomberg.com/professional/support/api-library/

https://pypi.org/project/xbbg/

当我运行这个:

import blpapi
from xbbg import blp
blp.bdp(tickers='NVDA US Equity', flds=['Security_Name', 'GICS_Sector_Name'])

出现以下错误消息:

12APR2022_15:07:37.756 33312:20836 ERROR blpapi_metadatamanagerimpl.cpp:247 blpapi.session.metadatamanager.{1} Resolve request timed out { RequestId=NULL }  
Traceback (most recent call last):
File "C:DevLabMyMainEnvlibsite-packagesIPythoncoreinteractiveshell.py", line 3361, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-16-83038899ddda>", line 5, in <cell line: 5>
blp.bdp(tickers='NVDA US Equity', flds=['Security_Name', 'GICS_Sector_Name'])
File "C:DevLabMyMainEnvlibsite-packagesxbbgblp.py", line 47, in bdp
request = process.create_request(
File "C:DevLabMyMainEnvlibsite-packagesxbbgcoreprocess.py", line 47, in create_request
req = srv.createRequest(request)
File "C:DevLabMyMainEnvlibsite-packagesblpapiservice.py", line 393, in createRequest
_ExceptionUtil.raiseOnError(errCode)
File "C:DevLabMyMainEnvlibsite-packagesblpapiexception.py", line 143, in raiseOnError
_ExceptionUtil.raiseException(errorCode, description)
File "C:DevLabMyMainEnvlibsite-packagesblpapiexception.py", line 135, in raiseException
raise errorClass(description, errorCode)
blpapi.exception.InvalidArgumentException: Null service handle (0x00020002)
'blpapi' in sys.modules 
'xbbg' in sys.modules

给我True

'blp' in sys.modules

给我False

知道为什么会出现这种错误吗?

这不是一个答案,而是一些诊断代码,用于隔离错误是来自Bloomberg(blpapi(还是来自使用此API的xbbg包装器。

它展示了如何在没有xbbg的情况下访问API级别的彭博数据。如果此代码成功运行,则您的Bloomberg连接正常,问题出在xbbg上,反之亦然。

import blpapi
sessionOptions = blpapi.SessionOptions()
sessionOptions.setServerHost('localhost')
sessionOptions.setServerPort(8194)
session = blpapi.Session(sessionOptions)
session.start()
if session.openService('//blp/refdata'):
svc = session.getService('//blp/refdata')
req = svc.createRequest('ReferenceDataRequest')
req.append('securities','NVDA US Equity')
req.append('fields','SECURITY_NAME')
req.append('fields','GICS_SECTOR_NAME')
session.sendRequest(req)
results = None
while(True):
ev = session.nextEvent()
if ev.eventType() == blpapi.Event.RESPONSE:
for msg in ev:
for elt in msg.asElement():
results = { e.getElementValue('security'): 
{ str(f.name()) : f.getValueAsString() 
for f in e.getElement('fieldData') } 
for e in elt }
break
print(results)

输出应为:

{'NVDA US Equity': {'SECURITY_NAME': 'NVIDIA Corp', 'GICS_SECTOR_NAME': 'Information Technology'}}

这基本上就是xbbg在调用bdp()时所做的,并测试基本的Bloomberg API是否有效。

最新更新