python3连接kafka模块pykafka生产者简单封装代码


Posted in Python onDecember 23, 2019

1.1安装模块

pip install pykafka

1.2基本使用

# -* coding:utf8 *- 
from pykafka import KafkaClient 
host = 'IP:9092, IP:9092, IP:9092'
client = KafkaClient(hosts = host) 
# 生产者 
topicdocu = client.topics['my-topic'] 
producer = topicdocu.get_producer() 
for i in range(100): 
 print i 
 producer.produce('test message ' + str(i ** 2)) 
producer.stop()

1.3简单封装

class KafkaProduct():

 def __init__(self,hosts,topic):
  """
  初始化实例
  :param hosts: 连接地址
  :param topic:
  """
  self.__client = KafkaClient(hosts=hosts)
  self.__topic = self.__client.topics[topic.encode()]

 def __set_topic(self, topic):
  self.__topic = self.__client.topics[topic.encode()]

 def set_topic(self, topic):
  """
  设置topic
  :param topic:
  :return:
  """
  self.__set_topic(topic)

 def get_topics(self):
  """
  获取当前所有topic
  :return:
  """
  return self.__client.topics

 def get_topic(self):
  """
  获取当前topic
  :return:
  """
  return self.__topic

 def Producer(self):
  """
  生产者对象
  :return:
  """
  with self.__topic.get_producer(delivery_reports=True) as producer:
   next_data = ''
   while True:
    if next_data:
     producer.produce(str(next_data).encode())
    next_data = yield True

 def send_data(self,datas):
  """
  发送数据
  :param datas:需要传入的可迭代对象
  :return:
  """
  c = self.Producer()
  next(c)
  for i in datas:
   c.send(i)

if __name__ == '__main__':

hosts = "1.2.3.4:9999,2.3.4.5:9090" #连接hosts
topic = "test_523"
K = KafkaProduct(hosts=hosts, topic=topic) #
#K.set_topic("test") #切换设置新的topic
K.get_topic() #获取当前设置的topic
#K.get_topics() #获取所有topic
data = range(10000) #要发送的可迭代对象
K.send_data(data)

以上这篇python3连接kafka模块pykafka生产者简单封装代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python开发实例分享bt种子爬虫程序和种子解析
May 21 Python
python常见数制转换实例分析
May 09 Python
python机器学习实战之树回归详解
Dec 20 Python
Python中支持向量机SVM的使用方法详解
Dec 26 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
详解Python传入参数的几种方法
May 16 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
python+jinja2实现接口数据批量生成工具
Aug 28 Python
python程序 创建多线程过程详解
Sep 23 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 Python
Python递归函数特点及原理解析
Mar 04 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 Python
python pyenv多版本管理工具的使用
Dec 23 #Python
Python测试Kafka集群(pykafka)实例
Dec 23 #Python
Python with语句和过程抽取思想
Dec 23 #Python
python每5分钟从kafka中提取数据的例子
Dec 23 #Python
Python彻底删除文件夹及其子文件方式
Dec 23 #Python
win10下python2和python3共存问题解决方法
Dec 23 #Python
py-charm延长试用期限实例
Dec 22 #Python
You might like
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
永不消失的title提示代码
2007/02/15 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
Python进程通信之匿名管道实例讲解
2015/04/11 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
Django跨域请求原理及实现代码
2020/11/14 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
蒂娜商店:Tiina the Store
2019/12/07 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
2013年军训通讯稿
2014/02/05 职场文书
2014组织生活会方案
2014/05/19 职场文书
2014国庆节标语口号
2014/09/19 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
MySQL锁机制
2021/04/05 MySQL
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL