订阅者未在Redis中收到消息

时间:2020-08-26 03:54:58

标签: python docker flask redis

我正在使用docker和redis来学习docker中的多容器如何工作。我正在使用下面的简单flask应用程序,该应用程序具有发布和订阅代码,但是我看不到订阅者收到任何消息

import redis
from flask import Flask

app = Flask(__name__)

client = redis.Redis(host="redis-server", decode_responses=True)


def event_handler(msg):
    print("Handler", msg, flush=True)


@app.route("/")
def index():
    print("Request received",flush=True)
    print(client.ping(), flush=True)
    client.publish("insert", "This is a test 1")
    client.publish("insert", "This is a test 2")
    client.publish("insert", "This is a test 3")
    ps = client.pubsub()
    ps.subscribe("insert",)
    print(ps.get_message(), flush=True)
    print(ps.get_message(), flush=True)
    print(ps.get_message(), flush=True)
    return "Hello World"


if __name__ == '__main__':
    app.run(host="0.0.0.0", port="5000")

下面是我的docker-compose

version: "3"
services:
  redis-server:
    image: "redis"
  python-app:
    build: .
    ports:
      - "4001:5000"

和docker文件

# Specify the base image

FROM python:alpine

# specify the working directory

WORKDIR /usr/app

# copy the requiremnts file

COPY ./requirements.txt ./

RUN pip install -r requirements.txt

COPY ./ ./

CMD ["python","./app.py"]

下面是我得到的输出

enter image description here

有人可以帮助我确定我在做什么错。谢谢

1 个答案:

答案 0 :(得分:0)

我能够通过创建两个单独的脚本(一个用于发布者,另一个用于订阅者)并首先启动订阅者来解决上述问题。

相关问题