python调用kafka服务(使用kafka-python库)
试验环境:
CDH 5.15.1
CentOS 7
Python 3.7.0
kafka 1.1.1
kafka-python :https://pypi.org/project/kafka-python/#files
实验目的:
通过python线程,不断的将指定接口中的数据取出,并将数据不断发送到kafka服务中。
实验步骤-1:
先将kafka-python下载并安装成功;
进行一个python调用kafka的简单测试:
进入python3的终端:
>>> from kafka import KafkaProducer
>>> producer = KafkaProducer(bootstrap_servers=["master:9092"])
>>> producer.send("test",b"Hello world")
<kafka.producer.future.FutureRecordMetadata object at 0x7f4bf56fbda0>
>>> producer.send("test",b"Hello world")
<kafka.producer.future.FutureRecordMetadata object at 0x7f4bf5715438>
启动kafka消费者:
kafka-console-consumer --zookeeper master:2181 --from-beginning --topic test
输出结果:
Hello world
Hello world
实验步骤-2:
实验代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : ParsePS.py
# @Author: cjj
# @Date : 2019/6/4
# @Desc : 请求接口,获取数据,对数据进行清洗 import re
import threading
import time
from urllib.error import URLError from kafka import KafkaProducer
from kafka.errors import KafkaError
from suds.client import Client class Data_clean:
# 获取测点数据的函数
def get_data(observation_point_name): try:
# 获取接口数据
user_url = 'http://xxx.xxx.xxx.xxx/ServiceSL/ServiceGetInsqlData.svc?wsdl'
client = Client(user_url)
result = client.service.GetSingleTagInfo(observation_point_name)
# 1.对数据进行清洗
# 1.1 先将数据转换成字符串
str1 = str(result)
# 1.2 取出所有双引号里面的数据,并将列表转换成字符串
pattern = re.compile('"(.*)"')
str2 = str(pattern.findall(str1))
# 1.3 将单引号去掉
str3 = str2.replace('\'', '')
# 1.4 将逗号换成制表符
str4 = str3.replace(', ', '\t')
# 1.5 去掉字符串前后的[]
str5 = str4[:-1][1:] return str5
except TimeoutError as e:
print("\033[1;31;0m>>>>>>TimeoutError ->->->->->-> 对接口的请求超时<<<<<<\033[0m")
# print(e)
except URLError as e:
print("\033[1;31;0m>>>>>>URLError ->->->->->-> 连接不到sql服务器<<<<<<\033[0m")
except:
print("\033[1;31;0m>>>>>>其它原因报错<<<<<<\033[0m") try:
producer = KafkaProducer(bootstrap_servers='master:9092')
while 1: msg = Data_clean.get_data("SLWS_ps_1hzybqz_WD.PV")
print(msg) # 指定主题和发送内容,将数据发送到kafka
producer.send('test', msg.encode('utf-8'))
time.sleep(5) except KafkaError as e:
print(e)
finally:
producer.close()
print('done!!!')
将代码上传到Linux服务器
执行代码:python3 ParsePS.py
查看kafka消费者结果:

python调用kafka服务(使用kafka-python库)的更多相关文章
- python调用SOA服务
python调用SOA服务,运用suds模块 #! /usr/bin/python # coding:gbk import suds,time,sys reload(sys) sys.setdefau ...
- python 调用github的api,呈现python的受欢迎的程度
1 使用api调用数据: 在浏览器的地址栏中输入: https://api.github.com/search/repositories?q=language:python&sort=star ...
- 使用Python调用SMTP服务自动发送Email
需求背景 假设我们想设计一个定时任务,比如每天定时的用python来测试服务是否在正常运行,但是又不希望每天登录到系统后台去查看服务状态.这里我们就可以采取python的smtp模块进行任务结果广播, ...
- 使用python调用淘宝的ip地址库查询接口结合zabbix判断dnspod域名解析是否正确
#encoding:utf-8 import socket import requests import json ''' 使用python结合zabbix判断dnspod域名解析是否正确 服务器分国 ...
- Python调用C模块以及性能分析
一.c,ctypes和python的数据类型的对应关系 ctypes type ctype Python type c_char char 1-character string c_wchar wch ...
- Python调用C/C++的种种方法
Python调用C/C++的种种方法 2010-12-07 09:59 28433人阅读 评论(1) 收藏 Python是解释性语言, 底层就是用c实现的, 所以用python调用C是很容易的, 下面 ...
- 用Python调用Shell命令
Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令. 用Python调用Shell命令有如下几种方式: 第一种 ...
- python调用dll详解
参考链接https://www.cnblogs.com/TQCAI/p/8881530.html https://www.jb51.net/article/52513.htm https://www. ...
- Python调用Matlab2014b引擎
用惯Python的你,是不是早已无法忍受matplotlib那丑陋无比的图以及蛋疼无比部署依赖? 当当当当,Matlab2014b的Python Engine API现已加入豪华午餐. 上次写了一篇文 ...
随机推荐
- BZOJ1485: [HNOI2009]有趣的数列(卡特兰数+快速幂)
题目链接 传送门 题面 思路 打表可以发现前六项分别为1,2,5,12,42,132,加上\(n=0\)时的1构成了卡特兰数的前几项. 看别人的题解说把每一个数扫一遍,奇数项当成入栈,偶数项当成出栈, ...
- 通过ip找mac
# coding:utf-8 import os cmd = {'arp': 'arp -a | find "', 'route': 'route PRINT ' } def win_mac ...
- Docker 部署 vue 项目
Docker 部署 vue 项目 Docker 作为轻量级虚拟化技术,拥有持续集成.版本控制.可移植性.隔离性和安全性等优势.本文使用Docker来部署一个vue的前端应用,并尽可能详尽的介绍了实现思 ...
- Python开发笔记之-浮点数传输
操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 Python 版本 : 2.7.5 思路如下 : 1.将浮点数a通过内存拷贝,赋值给相同字节的整型数据b: 2.将b转换为 ...
- hdu3625
hdu3625 题意: 酒店发生一起谋杀案.作为镇上最好的侦探,您应该立即检查酒店的所有N个房间.但是,房间的所有门都是锁着的,钥匙刚锁在房间里,真是个陷阱!您知道每个房间里只有一把钥匙,并且所有可能 ...
- 域渗透:SPN(ServicePrincipal Names)的利用
SPN 简介:服务主体名称(SPN:ServicePrincipal Names)是服务实例(可以理解为一个服务,比如 HTTP.MSSQL)的唯一标识符.Kerberos 身份验证使用 SPN 将服 ...
- 学习Spring-Data-Jpa(十二)---投影Projections-对查询结果的扩展
Spring-Data数据查询方法的返回通常的是Repository管理的聚合根的一个或多个实例.但是,有时候我们只需要返回某些特定的属性,不需要全部返回,或者只返回一些复合型的字段.Spring-D ...
- Windows10 Faster R-CNN(GPU版) 运行 Demo
上篇文章介绍了 TensorFlow 环境的搭建,这篇介绍 demo 运行 参考链接 参考链接2 1. 下载 TensorFlow object detection API 相关文件 点击跳转下载文件 ...
- AJax的三种响应
AJax的响应 1.普通文本方式(字符串) resp.getWriter().print("你好"); 2.JSON格式当要给前台页面传输 集合或者对象时 使用普通文本传输的时St ...
- 【POJ2488】A Knight's Journey
题目传送门 本题知识点:深度优先搜索 + 回溯 + 剪枝 + 字典序 题意是给你一个由 p,q 组成一个矩形的棋盘,让你用马棋在这上面走,是否能一线走完这 p * q 个格子. 关于这条路线是怎么走的 ...