【问题标题】:verify if bloomberg-anywhere pdblp session is valid验证bloomberg-anywhere pdblp 会话是否有效
【发布时间】:2022-07-19 06:17:49
【问题描述】:

我想检查import pdblp 是否处于活动状态,如果不是exit 会话。

我从这个链接 (Bloomberg Anywhere + pdblp or xbbg + not logged in) 注意到一个会话:

  1. 保持登录状态 3 天。
  2. 如果在另一台电脑上打开会话,则会注销。

因此,我想像这样实现try-execpt 块:

import pdblp


# check if connected
try:
    con = pdblp.BCon(timeout=5000)
    con.start()
except Exception as e:
    print('not logged in:', e)

我的问题是,以上内容是否足以验证连接? (即上面会抛出一个错误,e)。

【问题讨论】:

  • 如果您在终端未连接时启动会话,API 会返回一条消息,指出无法连接。我不熟悉python API,所以我不知道它是否会解析消息并抛出异常。测试起来应该不会太难。
  • 所以您有一个正在运行的 Python 应用程序,并且想查看在启动时初始连接后彭博连接是否已断开?
  • @DS_London,是的,这是正确的。事实上,我想在尝试提取数据之前保证连接(或退出),否则有返回空数据的风险,因此在此过程中稍后会生成空白数据帧或 csv。
  • 如果您使用基本级别的 Bloomberg Python api,您必须编写代码来处理对请求的响应,而像 xbbg 这样的包装器会为您执行此操作。使用低级 api 可以为您提供更丰富的错误数据,还可以让您查看“系统”事件(例如 SESSION_STATUS 消息)。因此,在低级别,您可以在发出请求之前检查消息队列中的任何系统消息。或者,只需尝试为您知道存在的股票代码请求少量参考数据。 data.bloomberglp.com/professional/sites/10/2017/03/…
  • 我不是从股票代码请求数据,所以这种方法行不通。我正在向BSRCH() 函数请求列表。因此,如果not connected,则存在返回空列表的风险。因此,我想非常具体地验证if connectedif not connected

标签: python try-except bloomberg


【解决方案1】:

TL;DR pip install blp

尝试: 从 blp 导入 blp
con = blp.BlpQuery().start()# 将 debug 改为 true 以查看问题

除了: print('没有彭博社')

是的,您的 try-except 就足够了。 except 语句将向您抛出错误,以了解 Bloomberg 连接不起作用(您包含到另一篇 SO 文章的链接正确指出python API 只能在 Excel API 为 Bloomberg 工作的相同条件下工作)。

但是,con = pdblp.BCon(timeout=5000) con.start() 会尝试连接近 1 分钟,这对我来说很麻烦。新的 blp 包将在 17 秒内快速排除错误。只需将您的 con 更改为新的 .start()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 2016-10-10
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多