繁体   English   中英

无法在Python中获得pubnub.time()的结果

[英]Unable to get result of pubnub.time() in Python

调用时如何获取pubnub.time()的结果? 这肯定与我不太了解python有关...

我正在尝试调用pubnub.time()来测试何时恢复网络连接,以便pubnub可以重新连接,并且我可以重新订阅必要的频道。 我似乎无法获得所需的输出。 根据pubnub docs ,time()具有3个方法,这些方法将返回int,字符串或日期。

envelope = pubnub.time()

envelope.int()  outputs error
envelope.str()  outputs error
envelope.date_time()  outputs error

我唯一可以工作的是print(envelope) ,它产生<pubnub.endpoints.time.Time object at 0x75fb8f50>

我不会深入研究我为此尝试过多少次迭代,并乞求帮助。

更新

我们有几个远程系统,我们希望使用PubNub从连接到计算机的硬件中收集数据点。 数据请求将进入,并且PubNub需要响应请求。 我们的主要问题是这些远程位置的DSL异常不稳定,一次会消失数小时甚至数天,而当我们的python应用仍在运行时,PubNub不会重新连接。 Internet中断后,尝试使用LINEAR和EXPONENTIAL进行reconnect_policy都无法重新连接。 小而短暂的中断将恢复。 除此之外,PubNub也非常适合此设置。

这是我的设置配置

pnconfig = PNConfiguration()
pnconfig.subscribe_key = 'sub'
pnconfig.publish_key = 'pub'
pnconfig.reconnect_policy = 'PNReconnectionPolicy.EXPONENTIAL'
pnconfig.daemon = True
pnconfig.ssl = True

这是我们的订阅回电:

class MySubscribeCallback(SubscribeCallback):
    def presence(self, pubnub, presence):
        pass

    def status(self, pubnub, status):
        if status.is_error():
            logger.error("PN Error" + str(status.error_data.exception))

        if status.category == 
            PNStatusCategory.PNUnexpectedDisconnectCategory:
            logger.error("PN Unexpected Disconnect")
            pubnub.reconnect()
            pass

        elif status.category == PNStatusCategory.PNConnectedCategory:
            logger.info("PN Connected")

        elif status.category == PNStatusCategory.PNReconnectedCategory:
            logger.warning("PN Re-Connected")
            pubnub.subscribe().channels('devChannel').execute()
            pass

        elif status.category == PNStatusCategory.PNDecryptionErrorCategory:
            logger.error("PN Decryption Error")
            pass

网络出现错误时PubNub SDK重新连接

PubNub SDK坚固耐用,能够在不稳定的网络状况下维持套接字连接。 尽管连接可能并不总是可用,但只要网络连接恢复,PubNub SDK就会自动重新创建套接字并下载所有丢失的消息。 PubNub Python SDK应该遵循这种理念。

在示例代码中,您似乎正在设置reconnect_policy 但是,您的代码将重新连接策略变量设置为字符串'PNReconnectionPolicy.EXPONENTIAL'而不是枚举 PNReconnectionPolicy.EXPONENTIAL

尝试对您的代码进行以下修改,以利用重新连接策略:

from pubnub.enums import PNReconnectionPolicy       ## <-- Import Enumerator
from pubnub.pnconfiguration import PNConfiguration

## ... init ...

## Set Reconnection Policy using Enumerator
pnconf.reconnect_policy = PNReconnectionPolicy.EXPONENTIAL

SDK的默认值为pnconf.reconnect_policy = PNReconnectionPolicy.NONE 另一个有效的选项是pnconf.reconnect_policy = PNReconnectionPolicy.LINEAR

设置为PNReconnectionPolicy.LINEAR以进行自动重新连接。 使用选项PNReconnectionPolicy.NONE禁用自动重新连接。 使用选项PNReconnectionPolicy.EXPONENTIAL设置指数重试间隔。

参考资料: https : //github.com/pubnub/python/search?q=PNReconnectionPolicy&unscoped_q=PNReconnectionPolicy

文档资料: https : //www.pubnub.com/docs/python/api-reference-configuration#configuration-args-1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM