我觉得很很蠢。
我正在从 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 .
