Redis,Python通过网络发送消息

4

我使用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

发布者和消费者必须连接到同一个Redis服务器。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接