我使用 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? 我在网上找不到任何具体示例,我找到的所有内容都假设您在本地主机上运行它。
最佳答案
发布者和消费者都必须连接到同一个 Redis 服务器。
我不熟悉 pubsub 的 .get_message()
方法,但我很确定 .listen()
工作得很好。
您可以使用 MONITOR
命令(例如 redis-cli -h 1.2.3.4 MONITOR
,其中 1.2.3.4 是Redis 服务器的地址)。
关于python - Redis、Python 通过网络发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43671492/