代码改变世界

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脚本中的函数
  1. import javax.script.*;  
  2. import org.python.core.PyFunction;  
  3. importimport org.python.core.PyObject;  
  4. import  
  5. importimport static java.lang.System.*;  
  6. publicclass{  
  7. publicstaticvoid    {  
  8.         PythonInterpreter interpreter = new PythonInterpreter();  
  9.  interpreter.execfile("C:\\Python35\\run\\SendFeiQMessage.py");  
  10.         PyFunction func = (PyFunction)interpreter.get("send",PyFunction.class);  
  11.         int a = 2010, b = 2 ;  
  12. newnew        System.out.println("anwser = " + pyobj.toString());  
  13.   
  14. //main}  
 
代码非原创,来自互联网。