【发布时间】:2019-03-11 23:31:50
【问题描述】:
调用时如何获得 pubnub.time() 的结果?这肯定和我对python不太了解有关...
我正在尝试调用 pubnub.time() 来测试网络连接何时恢复,以便 pubnub 可以重新连接并且我可以重新订阅必要的频道。我似乎无法获得所需的输出。根据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
【问题讨论】:
-
您在设置 API 密钥配置吗?
-
您不需要调用时间来 ping PubNub,而且您真的不应该这样做。您的用例详细信息是什么?发布、订阅等?越多越好。还有@exitcomestothis 所说的。
-
@KristopherIves - 是的,这是我的设置配置 pnconfig = PNConfiguration() pnconfig.subscribe_key = 'sub' pnconfig.publish_key = 'pub' pnconfig.reconnect_policy = 'PNReconnectionPolicy.EXPONENTIAL' pnconfig.daemon = True pnconfig.ssl = 真
-
@CraigConover - PN 将在远程设备上运行,该设备从与其连接的某些硬件收集数据点,因此它将是 pub 和 sub。当数据请求进来时,它会以结果作为响应。这些位置没有最好的 DSL,在测试过程中,如果我们模拟互联网中断超过 30 分钟,PN 永远不会恢复并且不会重新订阅。即使重新连接设置为线性和指数,也会发生这种情况。
-
@StephenBlum - 我可以提供任何额外的数据或日志文件吗?如果有帮助,我正在使用 Python 2.7.9。