java调用python脚本与飞秋通信,实现数据接入异常信息推送
2016-12-07 13:44 _莫等闲 阅读(928) 评论(0) 收藏 举报 最近搞一个大数据的项目,从很多系统接入数据,数据接入功能中对网络、数据完整性、延迟等做了监控,监控信息记录在数据库中,监控界面在大屏上,但并不是每天都会打开检查数据接入是不是有问题。为了及时发现数据接入中的异常并处理,做了个小程序,数据接入过程产生异常信息写入数据库时,同时给运维人员的飞秋发一条消息,提醒及时处理(后续还可以扩展一下功能,给内网OA发邮件)。步骤如下:
1、编写一个python脚本,名字为:SendFeiQMessage.py
import socket
def send():
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# localhost,用本机测试,默认端口2425
udp.connect(('localhost', 2425))
# IPMSG的报文格式:版本号:包编号:发送者姓名:发送者主机名:命令字:附加信息
udp.send(b'1:106:ServerMachine:node1:32:warning!')
注意:发送的字符串前加一个b,因为套接字的成员函数socket.send(bytes[, flags]) 形参为字节类型,不然运行时会报错:
TypeError: a bytes-like object is required, not 'str'
2、在java中调用本机python脚本中的函数
- import javax.script.*;
- import org.python.core.PyFunction;
- importimport org.python.core.PyObject;
- import
- importimport static java.lang.System.*;
- publicclass{
- publicstaticvoid {
- PythonInterpreter interpreter = new PythonInterpreter();
- interpreter.execfile("C:\\Python35\\run\\SendFeiQMessage.py");
- PyFunction func = (PyFunction)interpreter.get("send",PyFunction.class);
- int a = 2010, b = 2 ;
- newnew System.out.println("anwser = " + pyobj.toString());
- //main}
代码非原创,来自互联网。
浙公网安备 33010602011771号