【问题标题】:Exception in subscribe loop: Subscribe key not configured订阅循环中的异常:未配置订阅密钥
【发布时间】:2020-08-15 20:34:40
【问题描述】:

有人可以帮我弄清楚为什么会出现这个异常吗?即使我配置了订阅密钥,但似乎没有。

这里是异常:“订阅循环中的异常:未配置订阅密钥 重连策略已禁用,请手动处理重连。”

import time

from pubnub.pubnub import PubNub
from pubnub.pnconfiguration import PNConfiguration
from pubnub.callbacks import SubscribeCallback
from backend.blockchain.block import Block

pnconfig = PNConfiguration()
pnconfig.suscribe_key = 'sub-c-6d0fe192-dee4-11ea-9b19-...'
pnconfig.publish_key = 'pub-c-c3553c68-bf24-463c-ae43-...'

CHANNELS = {
'TEST': 'TEST',
'BLOCK': 'BLOCK'
}

class Listener(SubscribeCallback):
    def __init__(self, blockchain):
        self.blockchain = blockchain

        def message(self, pubnub, message_object):
            print('\n-- Channel: {message_object.channel} | Message: {message_object.message}')

            if message_object.channel == CHANNELS['BLOCK']:
                block = Block.from_json(message_object.message)
                potential_chain = self.blockchain.chain[:]
                potential_chain.append(block)

                try:
                    self.blockchain.replace_chain(potential_chain)
                    print('\n -- Successfully replaced the local chain')
                except Exception as e:
                    print('\n -- Did not replace chain: {e}')

class PubSub():
    """
    Handles the publish/subscribe layer of the application.
    Provides communication between the nodes of the blockchain network.
    """
    def __init__(self, blockchain):
        self.pubnub = PubNub(pnconfig)
        self.pubnub.subscribe().channels(CHANNELS.values()).execute()
        self.pubnub.add_listener(Listener(blockchain))

        def publish(self, channel, message):
            """
            Publish the message object to the channel.
            """
            self.pubnub.publish().channel(channel).message(message).sync()

        def broadcast_block(self, block):
            """
            Broadcast a block object to all nodes.
            """
            self.publish(CHANNELS['BLOCK'], block.to_json())

            def main():
                pubsub = PubSub()

                time.sleep(1)

                pubsub.publish(CHANNELS['TEST'], { 'foo': 'bar' })

                if __name__ == '__main__':
                    main()

【问题讨论】:

  • 我在运行您的代码时遇到了一些问题,但在您的问题中重新格式化/缩进和更新,以便复制/粘贴您的代码不会出错。
  • 但我不知道要为backend.blockchain.block 安装什么,所以我无法测试运行。但是您提到了重新连接问题。您的脚本是否成功运行一段时间后(断开连接后?)您是否收到此错误?
  • 没有克雷格,它根本没有运行

标签: python publish-subscribe pubnub


【解决方案1】:

我无法收到错误“订阅循环中的异常:订阅密钥未配置重新连接策略已禁用,请手动处理重新连接。”。

我使用了代码块:

pnconfig = PNConfiguration()
pnconfig.subscribe_key = "my_subkey"
pnconfig.publish_key = "my_pubkey"
pnconfig.ssl = True
pnconfig.uuid = "my_custom_uuid"
pnconfig.reconnect_policy = "LINEAR"
pubnub = PubNub(pnconfig)

来自页面:https://www.pubnub.com/docs/python/api-reference-configuration 并补充说:

PNReconnectionPolicy.NONE

来自页面:https://www.pubnub.com/docs/python/api-reference-configuration

【讨论】:

    猜你喜欢
    • 2021-01-10
    • 2017-07-25
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多