试验环境:

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库)的更多相关文章

  1. python调用SOA服务

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

  2. python 调用github的api,呈现python的受欢迎的程度

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

  3. 使用Python调用SMTP服务自动发送Email

    需求背景 假设我们想设计一个定时任务,比如每天定时的用python来测试服务是否在正常运行,但是又不希望每天登录到系统后台去查看服务状态.这里我们就可以采取python的smtp模块进行任务结果广播, ...

  4. 使用python调用淘宝的ip地址库查询接口结合zabbix判断dnspod域名解析是否正确

    #encoding:utf-8 import socket import requests import json ''' 使用python结合zabbix判断dnspod域名解析是否正确 服务器分国 ...

  5. Python调用C模块以及性能分析

    一.c,ctypes和python的数据类型的对应关系 ctypes type ctype Python type c_char char 1-character string c_wchar wch ...

  6. Python调用C/C++的种种方法

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

  7. 用Python调用Shell命令

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

  8. python调用dll详解

    参考链接https://www.cnblogs.com/TQCAI/p/8881530.html https://www.jb51.net/article/52513.htm https://www. ...

  9. Python调用Matlab2014b引擎

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

随机推荐

  1. Pod Hook

    Pod Hook kubernetes为容器提供了生命周期,称为Pod Hook,Pod Hook 是由kubelet 发起的, 可以发生在容器启动和停止之前运行,包含在容器的生命周期中.我们可以为所 ...

  2. Codeforces C. Elections(贪心枚举三分)

    题目描述: C. Elections time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  3. java代码转python代码

    (1)安装工具(windows 环境下面) 先下载antlr: http://www.antlr3.org/download/antlr-3.1.3.tar.gz 链接:http://pan.baid ...

  4. 二维数组中的查找 - Java版 -简单二分查找 -<<剑指Offer>> -水题

    如题 (总结) -认真读题, 还WA了一次, https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&am ...

  5. Thinkphp下实现D函数用于实例化Model格式

    * D函数用于实例化Model 格式 项目://分组/模块 * @param string $name Model资源地址 * @param string $layer 业务层名称 * @return ...

  6. postgres —— 窗口函数入门

    注:测试数据在 postgres —— 分组集与部分聚集 中 聚集将多行转变成较少.聚集的行.而窗口则不同,它把当前行与分组中的所有行对比,并且返回的行数没有变化. 组合当前行与 production ...

  7. jeecg uedit 自定义图片上传路径

    jeecg uedit 图片上传配置自定义物理路径,简单描述:我们知道 jeecg 中使用的 uedit 默认图片上传路径为 "当前项目\plug-in\ueditor\jsp\upload ...

  8. Tensorflow细节-P312-PROJECTOR

    首先进行数据预处理,需要生成.tsv..jpg文件 import matplotlib.pyplot as plt import numpy as np import os from tensorfl ...

  9. THUPC&CTS 2019 游记

    day ? 去THU报了个到. day? THUPC比赛日,三个人都没有智商,各种签到题不会做,被各路神仙吊着打.G题还猜了个假结论,做了好久都不对.最后顺利打铁了. 还顺便去看一下THUAC. da ...

  10. javascript之命名空间方法封装

    详细代码如下: Object.prototype.namespace= function(name){ var parts = name.split('.'); var current = this; ...