Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python写入Docker中运行的Kafka失败_Python_Docker_Apache Kafka_Docker Compose_Docker Toolbox - Fatal编程技术网

从Python写入Docker中运行的Kafka失败

从Python写入Docker中运行的Kafka失败,python,docker,apache-kafka,docker-compose,docker-toolbox,Python,Docker,Apache Kafka,Docker Compose,Docker Toolbox,我使用Docker工具箱和Docker Compose在OS X上的Docker中运行Zookeeper和Kafka。我的docker-compose.yml文件是: zk: image: patrickmay/zookeeper:3.4.6-jessie ports: - "2181:2181" command: /usr/local/zookeeper/bin/zkServer.sh start-foreground kafka0: image: patrickmay/

我使用Docker工具箱和Docker Compose在OS X上的Docker中运行Zookeeper和Kafka。我的docker-compose.yml文件是:

zk:
  image: patrickmay/zookeeper:3.4.6-jessie
  ports:
   - "2181:2181"
  command: /usr/local/zookeeper/bin/zkServer.sh start-foreground
kafka0:
  image: patrickmay/kafka:0.8.2.1-jessie
  ports:
   - "9092:9092"
  command: /usr/local/bin/start-kafka.sh 0 docker-machine 9092
  links:
   - zk
kafka1:
  image: patrickmay/kafka:0.8.2.1-jessie
  ports:
   - "9093:9092"
  command: /usr/local/bin/start-kafka.sh 1 docker-machine 9093
  links:
   - zk
kafka2:
  image: patrickmay/kafka:0.8.2.1-jessie
  ports:
   - "9094:9092"
  command: /usr/local/bin/start-kafka.sh 2 docker-machine 9094
  links:
   - zk
我创建了一个名为“测试印象”的主题:

~/packages/kafka_2.11-0.8.2.1/bin/kafka-topics.sh --zookeeper docker-machine --describe --topic test_impressions
Topic:test_impressions  PartitionCount:3    ReplicationFactor:2 Configs:
    Topic: test_impressions Partition: 0    Leader: 0   Replicas: 2,0   Isr: 0
    Topic: test_impressions Partition: 1    Leader: 1   Replicas: 0,1   Isr: 1
    Topic: test_impressions Partition: 2    Leader: 1   Replicas: 1,2   Isr: 1
我尝试使用以下简单的Python脚本编写:

#!/usr//bin/env python

from __future__ import print_function
import sys
from kafka import SimpleProducer, KafkaClient

kafka = KafkaClient('docker-machine:9094')
producer = SimpleProducer(kafka)

producer.send_messages(b'test_impressions', b'some message')
我得到这个错误:

Traceback (most recent call last):
  File "./kafka-producer.py", line 12, in <module>
    producer.send_messages(b'test_impressions', b'some message')
  File "/Users/patrick.may/projects/ad-server/frequency-cap/venv/lib/python2.7/site-packages/kafka/producer/simple.py", line 52, in send_messages
    partition = self._next_partition(topic)
  File "/Users/patrick.may/projects/ad-server/frequency-cap/venv/lib/python2.7/site-packages/kafka/producer/simple.py", line 36, in _next_partition
    self.client.load_metadata_for_topics(topic)
  File "/Users/patrick.may/projects/ad-server/frequency-cap/venv/lib/python2.7/site-packages/kafka/client.py", line 378, in load_metadata_for_topics
    kafka.common.check_error(topic_metadata)
  File "/Users/patrick.may/projects/ad-server/frequency-cap/venv/lib/python2.7/site-packages/kafka/common.py", line 233, in check_error
    raise error_class(response)
kafka.common.LeaderNotAvailableError:     TopicMetadata(topic='test_impressions', error=5, partitions=[])
回溯(最近一次呼叫最后一次):
文件“/kafka producer.py”,第12行,在
制作人。发送消息(b'test\u impressions',b'some message')
文件“/Users/patrick.may/projects/ad server/frequency cap/venv/lib/python2.7/site packages/kafka/producer/simple.py”,第52行,发送消息
分区=self.\u下一个\u分区(主题)
文件“/Users/patrick.may/projects/ad server/frequency cap/venv/lib/python2.7/site packages/kafka/producer/simple.py”,第36行,在下一个分区中
self.client.load\u主题的元数据(主题)
文件“/Users/patrick.may/projects/ad server/frequency cap/venv/lib/python2.7/site packages/kafka/client.py”,第378行,在加载元数据中,用于加载主题
kafka.common.check\u错误(主题元数据)
文件“/Users/patrick.may/projects/ad server/frequency cap/venv/lib/python2.7/site packages/kafka/common.py”,第233行,检查错误
引发错误\u类(响应)
kafka.common.LeaderNotAvailableError:TopicMetadata(topic='test\u impressions',error=5,partitions=[])
我尝试了所有三个docker机器端口(9092、9093和9094)。我有什么配置错误的吗


谢谢。

发现了我的错误。在docker-compose.yml文件中使用docker machine是一个错误,因为docker machine不在该/etc/hosts文件中。将其更改为数字IP地址解决了问题。

您能更具体一些吗?