Redis,Python通过网络发送消息

Posted

技术标签:

【中文标题】Redis,Python通过网络发送消息【英文标题】:Redis, Python send message over network 【发布时间】:2017-09-26 01:23:37 【问题描述】:

我使用 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 address of target machine' 但是当我运行它时,订阅者程序只是闲置,没有收到任何消息。

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于Redis,Python通过网络发送消息的主要内容,如果未能解决你的问题,请参考以下文章

如何从android发送消息到我的笔记本电脑python程序?

Redis 发布订阅

Redis发布订阅

Redis 发布订阅

redis使用3

Redis发布订阅