python每5分钟从kafka中提取数据的例子


Posted in Python onDecember 23, 2019

我就废话不多说了,直接上代码吧!

import sys
sys.path.append("..")
from datetime import datetime
from utils.kafka2file import KafkaDownloader
import os
"""
实现取kafka数据,文件按照取数据的间隔命名
如每5分钟从kafka取数据写入文件中,文件名为当前时间加5
"""

TOPIC = "rtz_queue"
HOSTS = "ip:9092,ip:9092"
GROUP = "2001"

def get_end_time(hour,minute,time_step):
 if (minute+time_step)%60<60:
  if (minute+time_step)%60<10:
   return str(hour+int((minute+time_step)/60))+":"+"0"+str((minute+time_step)%60)
  else:
   return str(hour+int((minute+time_step)/60))+":"+str((minute+time_step)%60)
 else:
  pass

def kafkawritefile(time_step,time_num):
 start = datetime.now()
 downloader = KafkaDownloader(HOSTS, TOPIC, GROUP)
 i = 1
 while(i<=time_num):
  end_time = get_end_time(start.hour, start.minute,i*time_step)
  end_time_file = end_time.replace(':', '_')
  outfile_path = "/data/tmp/" + end_time_file + ".csv"

  if os.path.exists(outfile_path):
   os.remove(outfile_path)
  writefile = open(outfile_path, 'a+', encoding='utf-8')
  
  for msg in downloader.message():
   curr_time = datetime.now()
   curr_time = str(curr_time)
   split_curr_time = curr_time.split(' ')
   curr_time_str = split_curr_time[1][0:5]
  
   if curr_time_str >= str(end_time):  
    break
  i += 1

if __name__=='__main__':
 time_step = 15
 time_num = 1
 kafkawritefile(time_step,time_num)

以上这篇python每5分钟从kafka中提取数据的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python操作字符串之rindex()方法的使用
May 19 Python
Python中用altzone()方法处理时区的教程
May 22 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
Python中表示字符串的三种方法
Sep 06 Python
python实现时间o(1)的最小栈的实例代码
Jul 23 Python
PyQt5 QListWidget选择多项并返回的实例
Jun 17 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
Python解释器及PyCharm工具安装过程
Feb 26 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 Python
python raise的基本使用
Sep 10 Python
Python彻底删除文件夹及其子文件方式
Dec 23 #Python
win10下python2和python3共存问题解决方法
Dec 23 #Python
py-charm延长试用期限实例
Dec 22 #Python
python分布式计算dispy的使用详解
Dec 22 #Python
使用python实现哈希表、字典、集合操作
Dec 22 #Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 #Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 #Python
You might like
解析isset与is_null的区别
2013/08/09 PHP
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
php自定义截取中文字符串-utf8版
2017/02/27 PHP
js网页版计算器的简单实现
2013/07/02 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
微信小程序实现弹出菜单
2018/07/19 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
python用post访问restful服务接口的方法
2018/12/07 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
Django中使用MySQL5.5的教程
2019/12/18 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
python中的插入排序的简单用法
2021/01/19 Python
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
UML设计模式笔试题
2014/06/07 面试题
高级文秘工作总结的自我评价
2013/09/28 职场文书
蓝颜请假条
2014/04/11 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
实习单位评语
2014/04/26 职场文书
弄虚作假心得体会
2014/09/10 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL