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使用reportlab将目录下所有的文本文件打印成pdf的方法
May 20 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
May 17 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
Jun 27 Python
机器学习的框架偏向于Python的13个原因
Dec 07 Python
pandas中Timestamp类用法详解
Dec 11 Python
python按时间排序目录下的文件实现方法
Oct 17 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
Python企业编码生成系统总体系统设计概述
Jul 26 Python
python实现简单图书管理系统
Nov 22 Python
Python2和Python3中@abstractmethod使用方法
Feb 04 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 Python
python多线程实现同时执行两个while循环的操作
May 02 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
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python标准库与第三方库详解
2014/07/22 Python
简单谈谈python的反射机制
2016/06/28 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
浅谈python常用程序算法
2019/03/22 Python
python中的协程深入理解
2019/06/10 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
印度服装购物网站:Limeroad
2018/09/26 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
简短的公司员工自我评价分享
2013/11/13 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
写给老师的保证书
2015/05/09 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书