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现已加入豪华午餐. 上次写了一篇文 ...
随机推荐
- Python的元编程案例
Python的元编程案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是元编程 元编程概念来自LISP和smalltalk. 我们写程序是直接写代码,是否能够用代码来生成 ...
- Python +appium 封装desired_caps模块
使用python+appium做android的自动化测试时,首先需要启动appium服务,然后连接上手机,配置如下: desired_caps = {"platformName" ...
- springmvc手动获取bean
@Service @Lazy(false) public class SpringContextHolder implements ApplicationContextAware, Disposabl ...
- PAT甲级1007题解——贪心
题目分析:对于每一个点来说,如果选择合并入包含前一个点的序列那么只有在前一个点的序列不为负数(这里指的是包含前一个位置的数的一个连续序列的和不为负数),当前点才会将自己也加入这个子序列,否则,当前点则 ...
- 删除线性表中所有值为x的元素
时间复杂度O(n),空间复杂度O(1). 简单的问题两种不同的思路. 代码: #include <stdio.h> #define MAX 100 struct sqlist{ int d ...
- Thinkphp下实现D函数用于实例化Model格式
* D函数用于实例化Model 格式 项目://分组/模块 * @param string $name Model资源地址 * @param string $layer 业务层名称 * @return ...
- 自动化发送邮件之SMTP
一.思路 1.若是QQ邮箱需要在设置-账户里面开启服务 2.在python中smtplib库是专门用来处理邮件 3.自动化邮件发送实操 a.要处理的邮件主题,寄件人,收件人,邮件正文,附件, b.邮件 ...
- [bzoj 4176] Lucas的数论 (杜教筛 + 莫比乌斯反演)
题面 设d(x)d(x)d(x)为xxx的约数个数,给定NNN,求 ∑i=1N∑j=1Nd(ij)\sum^{N}_{i=1}\sum^{N}_{j=1} d(ij)i=1∑Nj=1∑Nd(ij) ...
- LeetCode 1102. Path With Maximum Minimum Value
原题链接在这里:https://leetcode.com/problems/path-with-maximum-minimum-value/ 题目: Given a matrix of integer ...
- http服务读取配置文件,交叉编译
因为是在windows上编译的代码,在linux上不可执行,所以需要交叉编译 package main import ( "flag" "gopkg.in/ini.v1& ...