簡體   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