#python #confluent-platform #librdkafka
#python #confluent-платформа #librdkafka
Вопрос:
Я пишу приложение на python, которое использовало api confluent_kafka (который внутренне использует librdkafka) для вычисления пропускной способности kafka, однако в этом процессе я заметил, что даже когда я передаю фиктивное имя брокера, приложение не выдает никаких ошибок, поэтому am чего-то не хватает или это ошибка в api. Также какой может быть лучший способ справиться с этим?
import confluent_kafka
import json
import argparse
import time
def cmd_line_parse():
parser = argparse.ArgumentParser("Arg Parser")
parser.add_argument('-j','--json_config',help='command line argument for kafka configuration',required=True)
parser.add_argument('-t','--topic_name',help='kafka topic name',required=True)
parser.add_argument('-c','--msg_count',help='messages that you want to send to kafka topic for calculating throughput',default=500000,required=False)
parser.add_argument('-s','--msg_size',help='message size(in bytes) against which you want to test',default=1024,required=False)
args = parser.parse_args()
return args
def print_throughput_stats(time_taken,msg_count,msg_size):
print("Processed {0} messsages in {1:.2f} seconds".format(msg_count, time_taken))
print("Throughput: {0:.2f} MB/s".format((msg_size*msg_count)/time_taken/(1024*1024)))
def main():
args = cmd_line_parse()
kafka_config_dict = json.loads(args.json_config)
kafka_topic_name = args.topic_name
producer = confluent_kafka.Producer(**kafka_config_dict)
msg_payload = 'K'*args.msg_size
start_time = time.time()
for i in xrange(args.msg_count):
producer.produce(kafka_topic_name,value=msg_payload)
producer.poll(0)
producer.flush()
end_time = time.time()
print_throughput_stats(end_time-start_time,args.msg_count,args.msg_size)
if __name__ == "__main__":
try:
main()
except Exception as e:
print("Exception Occured: {}".format(str(e)))
Когда я тестировал это приложение, передавая неправильного брокера, ошибки / исключения не было :
python check_throughput.py -t perf_test -j '{"bootstrap.servers":"dummy.com"}'
Комментарии:
1. Добавьте
error_cb
обратный вызов и обработайтеERR__AUTH
orERR__ALL_BROKERS_DOWN
по своему вкусу.