Как сказать потребителю Python ждать загрузки клиента
У меня фундаментальная проблема в контейнере докеров, когда я пытаюсь начать создавать и запускать два изображения, где второе изображение (python и некоторые сценарии) зависит от первого изображения.
Это вызывает ошибку и остановку второго изображения. Как я могу использовать свой скрипт Python для использования на клиенте, чтобы дождаться загрузки клиента?
Я не думаю, что эта проблема обязательно связана с Apache Pulsar, но вот некоторая документация для заинтересованных
Потребитель на Клиенте
import pulsar
def initialize_consumer():
client = pulsar.Client('pulsar://localhost:6650')
consumer = client.subscribe('my-topic', 'my-subscription')
while True:
msg = consumer.receive()
try:
output_string = f"Received message {msg.data()} id={msg.message_id()}"
print(output_string)
with open('./output.txt', 'a') as f:
f.write(output_string + '\n')
# Acknowledge successful processing of the message
consumer.acknowledge(msg)
except:
# Message failed to be processed
consumer.negative_acknowledge(msg)
client.close()
1 ответ
Этот поток помог мне, так как у меня была проблема, связанная с : DockerDocker Compose ждет контейнера X перед запуском Y
Я по сути добавил
healthcheck
для моего
standalone
изображение, а затем использовал
restart: on-failure
для моего
conprod
изображение, и это, кажется, работает.
Я все еще был бы заинтересован в решении, ориентированном на Python, в фактической потребительской функции выше.
docker-compose.yaml
файл выглядит так:
version: '3.8'
services:
standalone:
hostname: standalone
container_name: standalone
image: apachepulsar/pulsar:2.8.1
ports:
- 8080:8080
- 6650:6650
command: bin/pulsar standalone
healthcheck:
test: ["CMD", "nc", "-vz", "localhost", "6650"]
interval: 20s
timeout: 5s
retries: 5
networks:
- conprod
conprod:
hostname: conprod
container_name: conprod
build:
context: .
dockerfile: ./Dockerfile
ports:
- 80:80
restart: on-failure
depends_on:
- standalone
networks:
- conprod
networks:
conprod: