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现已加入豪华午餐. 上次写了一篇文 ...
随机推荐
- 团队第五次作业——Alpha2
一.相关信息 Q A 作业所属课程 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign/ 作业要求 https: ...
- K8s基本概念入门
序言 没等到风来,绵绵小雨,所以写个随笔,聊聊k8s的基本概念. k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非 ...
- Codeforces_Round_547 (Div. 3)题解
题目链接 传送门 A题 题目 题意 给你两个正整数\(n\)和\(m\),然后你可以进行无数次操作(每次操作可以将\(n\)扩大两倍,或者扩大三倍),问你是否能够得到\(m\). 代码实现如下 n, ...
- 微信小程序~自定义属性设置和获取(data-)
自定义属性语法以data-开头: <button data-info="自定义数据" bindtap="testClick">自定义属性测试< ...
- 实验八 《Coderxiaoban团队》团队作业4:基于原型的团队项目需求调研与分析
实验八 <Coderxiaoban团队>团队作业4:基于原型的团队项目需求调研与分析 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验八 团队作业4:基于 ...
- MySQL 日期时间相关函数
第一部分:时间差函数 timestampdiff.datediff.timediff 一.时间差函数:timestampdiff 语法:timestampdiff(interval, datetim ...
- C语言 define实现的宏函数汇总
最大值,最小值 #define MAX( x, y ) ( (x) > (y) ? (x) : (y) )#define MIN( x, y ) ( (x) < (y) ? (x) : ( ...
- 调用图灵API V2 遇到的坑
1:遇到的第一个问题:跨域 解决办法: 第一种:使用query中的jsonp 可惜图灵要求post方法,而jsonp,只能使用get方法,才能跨域,失败 第二种:服务器添加header,可是我怎么去改 ...
- SpringSecurity 整合 JWT
项目集成Spring Security(一) 在上一篇基础上继续集成 JWT ,实现用户身份验证. 前言 前后端分离项目中,如果直接把 API 接口对外开放,我们知道这样风险是很大的,所以在上一篇中我 ...
- NTSTATUS代码摘录
00000000 STATUS_SUCCESS00000000 STATUS_WAIT_000000001 STATUS_WAIT_100000002 STATUS_WAIT_200000003 ST ...