Skip to main content
 首页 » 编程设计

python之让 PubNub 订阅者作为服务保持事件状态(Python SDK)

2024年09月07日30mengfanrong

我觉得很很蠢。

我正在从 GPS/蓝牙节点向 PubNub 发布消息。这工作正常。

我需要订阅 PubNub channel 并将消息导入数据库 24/7(基于 Django 的 PostgreSQL)。我使用数据库来绘制节点位置、添加 key 、注册用户等...

问题:此 Python 脚本在 execute() 后终止。我需要它才能永远活着。

# Set up the client params 
pnconfig = PNConfiguration() 
pnconfig.subscribe_key = 'sub-23948570947502475057205702354702547' 
pnconfig.ssl = True 
 
# Connect to PubNub and subscribe to a channel 
pubnub = PubNub(config=pnconfig) 
pubnub.add_listener(NodeSubscribeCallback()) 
pubnub.subscribe().channels('node_raw').execute() 

问题:如何将 PubNub channel 的订阅作为服务运行?换句话说,我怎样才能让 Python 保持我的脚本运行?

我试过:

  • 基于threading.Thread运行PubNub的几个独立类
  • while True: time.sleep(10) 在 execute()
  • 之后
  • 谷歌搜索时间
  • signal.pause() 在我的脚本末尾

请您参考如下方法:

将 PubNub 订阅者保持为服务(Python SDK)

您可以使用数据库同步方法。您的代码即将完成。只需要一些点点滴滴。这是您实现目标所需的代码。

import pubnub 
 
from pubnub.pnconfiguration import PNConfiguration 
from pubnub.pubnub          import PubNub, SubscribeListener 
 
class DatabaseSync(SubscribeListener): 
    def message( self, pubnub, data ): 
        print( "Saving to Database: ", data.message ) 
 
pnconfig               = PNConfiguration() 
pnconfig.subscribe_key = 'demo' ## Only Need SubKey 
pnconfig.ssl           = True   ## Use TLS Socket 
pubnub                 = PubNub(pnconfig) 
 
pubnub.add_listener(DatabaseSync()) 
pubnub.subscribe().channels("node_raw").execute() 

就是这样!使用 Python 获取同步到数据库的事件更改日志的 super 简单方法。源 Material 来自PubNub Python Documentation还有一个古老的要点学习Python by Example .