试验环境:

CDH 5.15.1

CentOS 7

Python 3.7.0

kafka 1.1.1

实验目的:

通过python线程,不断的将指定接口中的数据取出,并将数据不断发送到kafka服务中。

实验步骤-1:

先将kafka-python下载并安装成功;

进行一个python调用kafka的简单测试:

进入python3的终端:

>>> from kafka import KafkaProducer
>>> producer = KafkaProducer(bootstrap_servers=["master:9092"])
>>> producer.send("test",b"Hello world")
>>> producer.send("test",b"Hello world")

启动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指标 python从kafka读取数据_kafka

python调用SOA服务

python调用SOA服务,运用suds模块 #! /usr/bin/python # coding:gbk import suds,time,sys reload(sys) sys.setdefau ...

python 调用github的api&comma;呈现python的受欢迎的程度

1 使用api调用数据: 在浏览器的地址栏中输入: https://api.github.com/search/repositories?q=language:python&sort=star ...

使用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&sol;C&plus;&plus;的种种方法

Python调用C/C++的种种方法 2010-12-07 09:59 28433人阅读 评论(1) 收藏 Python是解释性语言, 底层就是用c实现的, 所以用python调用C是很容易的, 下面 ...

用Python调用Shell命令

Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库,也当然可以用Python调用Shell命令. 用Python调用Shell命令有如下几种方式: 第一种 ...

python调用dll详解

Python调用Matlab2014b引擎

用惯Python的你,是不是早已无法忍受matplotlib那丑陋无比的图以及蛋疼无比部署依赖? 当当当当,Matlab2014b的Python Engine API现已加入豪华午餐. 上次写了一篇文 ...

python3&period;4学习笔记&lpar;二十三&rpar; Python调用淘宝IP库获取IP归属地返回省市运营商实例代码

python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...

随机推荐

走格子 51nod

球最少需要的能量,就是保证能量一直>=0,从头遍历取过程中能量最小值,绝对值为答案. #include #include #in ...

求50-100内的素数(java)

实现代码: public class sushu { public static void main(String[] args) { for(int i=50 ; i<=100; i++){ ...

POJ2503——Babelfish&lpar;map映射&plus;string字符串&rpar;

Babelfish DescriptionYou have just moved from Waterloo to a big city. The people here speak an incom ...

as3 打开窗口类

package FlashCode.utils{ import flash.display.Sprite; import flash.net.URLRequest; import flash.net. ...

CUDA5&period;5 的环境变量设置

为了方便,我写了这个文件用于设置cuda5.5的环境变量. 其中有些环境变量可能用不到,大家根据需要修改就是了. export CUDA_HOME=/usr/local/cuda-5.5 export ...

0x16 Tire

题目链接:https://www.acwing.com/problem/con ...

002&lowbar;关于six版本过低报cannot import name urllib&lowbar;parse的问题

一. 参考:https://github.com/Parsely/pykafka/issues/222 [root@jyall.com tmp]#python check.py #报错如下 Trace ...

python学习 day16 &lpar;3月21日&rpar;----&lpar;正则)

背景:(对程序的伤害) #__author : 'liuyang' #date : 2019/3/21 0021 上午 10:34 #模块和功能之间的关系 #先有的功能 #正则表达式 #time模块 ...

Java - HashTable源码分析

java提高篇(二五)-----HashTable 在java中与有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,valu ...

java&lowbar;方法

方法 1.1方法概述 在我们的日常生活中,方法可以理解为要做某件事情,而采取的解决办法. 如:小明同学在路边准备坐车来学校学习.这就面临着一件事情(坐车到学校这件事情)需要解决,解决办法呢?可采用坐公 ...