python+kafka+supervisor

本文介绍了使用Python消费Kafka消息,重点关注了`poll()`函数的使用,如设置`timeout_ms=100`和`max_records=100`。此外,详细讲解了Supervisor作为进程管理工具的原理,包括其如何通过fork/exec启动和监控子进程,并在子进程异常时自动重启。安装Supervisor只需通过pip,配置文件中需确保启动选项为true,并使用绝对路径。文章鼓励读者如果受益于内容,请点赞支持。
摘要由CSDN通过智能技术生成

python脚本实现kafka消费

场景

工作中遇到需要将业务开发写入kafka队列的数据消费并插入到clickhouse的场景。
一般情况下,我都会选择别人写好的服务来进行这种需要健壮性的操作。这里
我们选用了https://github.com/childe/gohangout
然而我们的业务开发人员将数据进行了base64编码,而这个服务不支持解码。
要不然也不会有这篇博客。这里我实名diss一下老甘。

脚本

import pymysql
from SQL import *
from clickhouse_driver import Client
from kafka import KafkaConsumer
import base64
import json
import time
from datetime import datetime
import logging
from settings import MySQLSettings


class CK:
    def __init__(self,host:str,port:int,user:str,password:str,database:str):
        self.database = database
        self.client = Client(host = host,port=port,password = password,user = user)
    def insert_data(self,table:str,columns:list,data:list):
        """
        如果不存在表就创建,存在表则比较表字段与数据字段是否一致,一致插入
        :param table: 数据插入表
        :param columns: 数据插入表的字段
        :param data: 数据
        :return: Bool
        """
        self.client.execute(create_database_SQL.format(database=self.database))
        self.client.execute(create_table_SQL.format(database=self.database,table=table))
        columns_SQL = """DESC `{database}`.`{table}`""".format(database = self.database,table = table)
        cols = set()
        for item 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值