Redis,Python通过网络发送消息

时间:2017-04-28 03:29:36

标签: python networking redis localhost

我使用Redis PubSub消息传递系统使用Python编写了以下代码。

发布方:

 import redis
 def func1(m):

 queue = redis.StrictRedis(host='localhost', port=6379, db=0)
 channel = queue.pubsub()
 queue.publish("message", m)

 if __name__=='__main__':    
 while True:

     m = raw_input('Enter message: ')
     func1(m)

订阅方:

import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
p = r.pubsub()
p.subscribe('message')

while True:
    message = p.get_message()
    if message:
        print  message['data']

我希望能够将消息从一台计算机发送到同一网络上的另一台计算机。我尝试在两台独立的机器上运行发布者和订阅者代码,将host ='localhost'更改为host ='目标机器的IP地址' 但是当我运行它时,订阅者程序只是闲置而没有收到任何消息。

如何通过网络而不是仅在本地计算机上使用Redis? 我是否需要在发布和订阅方都指定目标机器IP? 我在网上找不到任何具体的例子,我发现的一切只是假设你在本地主机上运行它。

1 个答案:

答案 0 :(得分:0)

发布者和使用者都必须连接到同一台Redis服务器。

我不熟悉pubsub的.get_message()方法,但我很确定.listen()工作正常。

您可以使用MONITOR命令检查发送到Redis服务器的命令(例如redis-cli -h 1.2.3.4 MONITOR,其中1.2.3.4是Redis服务器的地址)。