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实现简单socket程序在两台电脑之间传输消息的方法
Mar 13 Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
python中利用Future对象异步返回结果示例代码
Sep 07 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
对Pycharm创建py文件时自定义头部模板的方法详解
Feb 12 Python
Python values()与itervalues()的用法详解
Nov 27 Python
python对一个数向上取整的实例方法
Jun 18 Python
python中zip()函数遍历多个列表方法
Feb 18 Python
Python pandas求方差和标准差的方法实例
Aug 04 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 25 Python
使用python生成大量数据写入es数据库并查询操作(2)
Sep 23 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
mysql总结之explain
2012/02/27 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
利用python求相邻数的方法示例
2017/08/18 Python
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
基层工作经历证明
2014/01/13 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
国培教师自我鉴定
2014/02/12 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python