微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

blpapi.exception.UnsupportedOperationException:没有快照的订阅管理端点0x00080013

如何解决blpapi.exception.UnsupportedOperationException:没有快照的订阅管理端点0x00080013

我正尝试使用Bloomberg软件包随附的示例程序通过Python API向Bloomberg请求快照。他们自己的程序无法正常运行,我不断收到错误消息:

WARN blpapi_subscriptionmanager.cpp:1653 blpapi.session.subscriptionmanager.{1} Subscription management endpoints are required for snapshot request templates but none are available

blpapi.exception.UnsupportedOperationException: No subscription management endpoints for snapshot (0x00080013).

具有快照请求的代码部分在主函数中:

def main():
    """main entry point"""
    global options
    options = parseCmdLine()

# Create a session and Fill Sessionoptions
    sessionoptions = blpapi.Sessionoptions()
    for idx,host in enumerate(options.hosts):
        sessionoptions.setServerAddress(host,options.port,idx)
    sessionoptions.setAuthenticationoptions(options.auth)
    sessionoptions.setAutoRestartOndisconnection(True)

    print("Connecting to port %d on %s" % (
        options.port,",".join(options.hosts)))

    session = blpapi.Session(sessionoptions)

    if not session.start():
        print("Failed to start session.")
        return

    subscriptionIdentity = None
    if options.auth:
        subscriptionIdentity = session.createIdentity()
        isAuthorized = False
        authServiceName = "//blp/apiauth"
        if session.openService(authServiceName):
            authService = session.getService(authServiceName)
            isAuthorized = authorize(authService,subscriptionIdentity,session,blpapi.CorrelationId("auth"))
        if not isAuthorized:
            print("No authorization")
            return
    else:
        print("Not using authorization")

# Snapshot Request Part:

    fieldStr = "?fields=" + ",".join(options.fields)

    snapshots = []
    nextCorrelationId = 0
    for i,topic in enumerate(options.topics):
        subscriptionString = options.service + topic + fieldStr
        snapshots.append(session.createSnapshotRequestTemplate(
            subscriptionString,blpapi.CorrelationId(i)))
        nextCorrelationId += 1

    requestTemplateAvailable = blpapi.Name('RequestTemplateAvailable')
    eventCount = 0
    try:
        while True:
            # Specify timeout to give a chance for Ctrl-C
            event = session.nextEvent(1000)
            for msg in event:
                if event.eventType() == blpapi.Event.ADMIN and  \
                        msg.messageType() == requestTemplateAvailable:

                    for requestTemplate in snapshots:
                        session.sendRequestTemplate(
                            requestTemplate,blpapi.CorrelationId(nextCorrelationId))
                        nextCorrelationId += 1

                elif event.eventType() == blpapi.Event.RESPONSE or \
                        event.eventType() == blpapi.Event.PARTIAL_RESPONSE:

                    cid = msg.correlationIds()[0].value()
                    print("%s - %s" % (cid,msg))
                else:
                    print(msg)
            if event.eventType() == blpapi.Event.RESPONSE:
                eventCount += 1
                if eventCount >= options.maxEvents:
                    print("%d events processed,terminating." % eventCount)
                    break
            elif event.eventType() == blpapi.Event.TIMEOUT:
                for requestTemplate in snapshots:
                    session.sendRequestTemplate(
                        requestTemplate,blpapi.CorrelationId(nextCorrelationId))
                    nextCorrelationId += 1

我不知道端点和订阅管理端点是否是2种不同的事物,因为我还有其他代码可以正常工作,并且端点是我要提取数据的服务器的IP。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。