gpt4 book ai didi

python - 无法在Python中获取pubnub.time()的结果

转载 作者:太空宇宙 更新时间:2023-11-03 21:10:18 25 4
gpt4 key购买 nike

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

我正在尝试调用 pubnub.time() 来测试网络连接何时恢复,以便 pubnub 可以重新连接,并且我可以重新订阅必要的 channel 。我似乎无法获得所需的输出。根据 pubnub docs 、 time() 有 3 个方法,它们将返回 int、string 或 date。

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 不会重新连接。尝试使用 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

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

关于python - 无法在Python中获取pubnub.time()的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55111932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com