Python---向kafka发送Msg

Python向kafka发送Msg

import json
import datetime
import socket

from kafka import KafkaProducer
from kafka.errors import KafkaError


class KafkaProducerObj:
    def __init__(self, server):
        self._server = server
        self.producer = KafkaProducer(bootstrap_servers='{address}'.format(address=self._server))

    def send_data(self, topic, params):
        try:
            messages = json.dumps(params)
            self.producer.send(
                topic=topic,
                key=messages.encode('utf-8'),
                value=messages.encode("utf-8")
            )
            self.producer.flush()
        except KafkaError as e:
            print(e)

    def __del__(self):
        try:
            if self.producer is not None:
                self.producer.close(timeout=2)
                self.producer = None
        except KafkaError as e:
            print(e)


def send_msg(data):
    """
        将数据发送至kafka
    :param data:
    :return:
    """

    host_ip = get_host_ip()
    log_level = "INFO"
    appId = "ove"
    logInfo = data
    event_time = get_current_time()
	
	# 发送数据
    send_data = dict()
    send_data["event_time"] = event_time
    send_data["hostIp"] = host_ip
    send_data["logLevel"] = log_level
    send_data["appId"] = appId
    send_data["logInfo"] = logInfo

    # 发送消息
    producer = KafkaProducerObj('ip:port') # 输入ip地址与端口号
    producer.send_data(topic="topic-bdplog-ocr-commonproduct", params=send_data)


def get_host_ip():
    """
        查询本机ip地址
    :return: ip
    """
    s = None
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('8.8.8.8', 80))
        ip = s.getsockname()[0]
    finally:
        s.close()

    return ip


def get_current_time():
    """
        获取当前时刻时间
    :return: 返回字符形式
    """
    now_time = datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
    return now_time


if __name__ == '__main__':
    msg = {"receive_data": 90, "all_data": 100, "flag": "1"}
    msg2 = {"flag": "0", "errorInfo": "识别发生异常。"}
    msg3 = {"flag": " 0", "errorInfo": "未识别有效信息。"}
    send_msg(msg)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值