Как сказать потребителю Python ждать загрузки клиента

У меня фундаментальная проблема в контейнере докеров, когда я пытаюсь начать создавать и запускать два изображения, где второе изображение (python и некоторые сценарии) зависит от первого изображения.

Это вызывает ошибку и остановку второго изображения. Как я могу использовать свой скрипт Python для использования на клиенте, чтобы дождаться загрузки клиента?

Я не думаю, что эта проблема обязательно связана с Apache Pulsar, но вот некоторая документация для заинтересованных

Автономный Apache Pulsar

Документы api python

Потребитель на Клиенте

      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:
Другие вопросы по тегам