首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >彭博API请求超时- Python

彭博API请求超时- Python
EN

Stack Overflow用户
提问于 2022-04-12 14:11:13
回答 1查看 475关注 0票数 0

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

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

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

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

当我运行这个:

代码语言:javascript
运行
复制
import blpapi
from xbbg import blp

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

出现以下错误消息:

代码语言:javascript
运行
复制
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:\DevLab\MyMainEnv\lib\site-packages\IPython\core\interactiveshell.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:\DevLab\MyMainEnv\lib\site-packages\xbbg\blp.py", line 47, in bdp
    request = process.create_request(
  File "C:\DevLab\MyMainEnv\lib\site-packages\xbbg\core\process.py", line 47, in create_request
    req = srv.createRequest(request)
  File "C:\DevLab\MyMainEnv\lib\site-packages\blpapi\service.py", line 393, in createRequest
    _ExceptionUtil.raiseOnError(errCode)
  File "C:\DevLab\MyMainEnv\lib\site-packages\blpapi\exception.py", line 143, in raiseOnError
    _ExceptionUtil.raiseException(errorCode, description)
  File "C:\DevLab\MyMainEnv\lib\site-packages\blpapi\exception.py", line 135, in raiseException
    raise errorClass(description, errorCode)
blpapi.exception.InvalidArgumentException: Null service handle (0x00020002)
代码语言:javascript
运行
复制
'blpapi' in sys.modules 
'xbbg' in sys.modules

给我True

代码语言:javascript
运行
复制
'blp' in sys.modules

给我False

知道为什么会发生这个错误吗?

EN

Stack Overflow用户

回答已采纳

发布于 2022-04-14 09:44:53

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

它展示了如何在不使用xbbg的情况下访问API级别的彭博数据。如果这段代码成功运行,那么您的Bloomberg连接就可以了,问题在于xbbg,反之亦然。

代码语言:javascript
运行
复制
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)

产出应是:

代码语言:javascript
运行
复制
{'NVDA US Equity': {'SECURITY_NAME': 'NVIDIA Corp', 'GICS_SECTOR_NAME': 'Information Technology'}}

这基本上就是xbbg在调用bdp()时所做的事情,并测试基本的彭博API是否正常工作。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71844225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档