我正在尝试接收来自我的鼠兔生产者的消息。我正在关注本教程:https ://www.youtube.com/watch?v=0iB5IPoTDts 。
我可以看到,当我手动运行docker-compose exec backend bash
然后运行python consumer.py
时,我可以接收消息,并且它们正在通过该print()
函数记录到标准输出。但是,当我将以下服务添加到 mydocker-compose.yml
时,容器不会记录到标准输出:
rabbitmq_queue:
build:
context: .
dockerfile: Dockerfile
command: 'python consumer.py && echo hello'
volumes:
- .:/app
depends_on:
- db
没有错误。当我将命令更改为 时echo hello
,容器会很好地将 hello 打印到标准输出。为什么我的服务没有记录到标准输出?此外,它似乎运行正常 - 当我尝试抛出异常时,我的服务错误。当它出错时,它也会开始打印消息。否则它不会打印错误消息。
有没有办法解决这个问题?
consumer.py
:
import pika
params = pika.URLParameters(
"hidden thing here"
)
connection = pika.BlockingConnection(params)
channel = connection.channel()
channel.queue_declare(queue="main")
def callback(channel, method, properties, body):
print("[CONSUMER] Received message in main")
print(body)
# raise Exception()
channel.basic_consume(queue="main", on_message_callback=callback, auto_ack=True)
print("[CONSUMER] Started consuming")
channel.start_consuming()
channel.close()