python调用kafka拉取数据_python调用kafka服务(使用kafka-python库)

试验环境:

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消费者结果:

L3Byb3h5L2h0dHBzL2ltZzIwMTguY25ibG9ncy5jb20vYmxvZy8xMjk1NDUxLzIwMTkwNi8xMjk1NDUxLTIwMTkwNjEyMTAwMDE5NzU1LTEzMjc2MzQyNTAucG5n.jpg

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详解

参考链接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现已加入豪华午餐. 上次写了一篇文 ...

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.cnblogs.com/TheRoadToTheGold/p/6290732.html 题目链接: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方法概述 在我们的日常生活中,方法可以理解为要做某件事情,而采取的解决办法. 如:小明同学在路边准备坐车来学校学习.这就面临着一件事情(坐车到学校这件事情)需要解决,解决办法呢?可采用坐公 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值