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中的yield使用方法
Feb 11 Python
python处理圆角图片、圆形图片的例子
Apr 25 Python
Python编程中实现迭代器的一些技巧小结
Jun 21 Python
浅谈python对象数据的读写权限
Sep 12 Python
Python内置函数OCT详解
Nov 09 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
python 实现在txt指定行追加文本的方法
Apr 29 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
Python Django 命名空间模式的实现
Aug 09 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
用python给csv里的数据排序的具体代码
Jul 17 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
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
js传值 判断
2006/10/26 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
jquery实现盒子下拉效果示例代码
2013/09/12 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
js+css实现全屏侧边栏
2020/06/16 Javascript
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
python 函数传参之传值还是传引用的分析
2017/09/07 Python
Python随机函数random()使用方法小结
2018/04/29 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
python实现zabbix发送短信脚本
2018/09/17 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
Python类型转换的魔术方法详解
2020/12/23 Python
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
餐饮管理自我介绍信
2014/01/15 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
办公室副主任职责范本
2014/03/08 职场文书
大课间体育活动方案
2014/03/12 职场文书
培训班主持词
2014/03/28 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
社团招新宣传语
2015/07/13 职场文书
婚礼父母致辞
2015/07/28 职场文书
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
2022/09/23 HTML / CSS