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中使用swapCase()方法转换大小写的教程
May 20 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
在Python的一段程序中如何使用多次事件循环详解
Sep 07 Python
Python开发最牛逼的IDE——pycharm
Aug 01 Python
python 使用值来排序一个字典的方法
Nov 16 Python
对Python正则匹配IP、Url、Mail的方法详解
Dec 25 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
利用Python的sympy包求解一元三次方程示例
Nov 22 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
Mar 02 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 Python
Pycharm 设置默认解释器路径和编码格式的操作
Feb 05 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
Apr 27 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
PHP获取数组最后一个值的2种方法
2015/01/21 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
php实现socket推送技术的示例
2017/12/20 PHP
实例解析php的数据类型
2018/10/24 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
爬山算法简介和Python实现实例
2014/04/26 Python
Python处理字符串之isspace()方法的使用
2015/05/19 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
Python 递归函数详解及实例
2016/12/27 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
python把1变成01的步骤总结
2019/02/27 Python
python实现微信每日一句自动发送给喜欢的人
2019/04/29 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
大学生党员自我评价范文
2014/04/09 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL