基于python的websocket开发,tomcat日志web页面实时打印监控案例

web socket 接收器:webSocket.py

相关依赖

# pip install bottle gevent gevent-websocket argparse
from bottle import request, Bottle, abort
from geventwebsocket import WebSocketError
from gevent.pywsgi import WSGIServer
from geventwebsocket.handler import WebSocketHandler
app = Bottle()
users = set()
@app.get(‘/websocket/‘)
def handle_websocket():
    wsock = request.environ.get(‘wsgi.websocket‘)
    users.add(wsock)
    if not wsock:
        abort(400, ‘Expected WebSocket request.‘)
    while True:
        try:
            message = wsock.receive()
        except WebSocketError:
            break
        print u"user:%s" % (len(users))
        if message:
            for user in users:
                try:
                    user.send(message)
                except WebSocketError:
                    print u‘kill‘
    users.remove(wsock)
server = WSGIServer(("0.0.0.0", 1019), app,handler_class=WebSocketHandler)
server.serve_forever()

服务端:logs.py

相关依赖:

pip install websocket-client
import subprocess
from websocket import create_connection
ws_server = "ws://172.18.30.19:1010/websocket/"
ws = create_connection(ws_server)
command=‘sshpass -p 123456 ssh 192.168.20.200 -p 32776 -o StrictHostKeychecking=no "tail -f /root/tomcat-8.0/logs/catalina.out"‘
popen=subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
while True:
    line=popen.stdout.readline().strip()
    ws.send(line)

应用前端:logs.html

<!DOCTYPE html>
<html>
<head>
    <title>LOG+</title>
    <style>
        html, body {
            font: normal 0.9em arial, helvetica;
        }
        #log {
            width: 440px;
            height: 200px;
            border: 1px solid #7F9DB9;
            overflow: auto;
        }
        #msg {
            width: 330px;
        }
    </style>
    <script>
        var socket;
        function init() {
            var host = "ws://172.18.30.19:1010/websocket/";
            try {
                socket = new WebSocket(host);
                socket.onopen = function (msg) {
                    log(‘Connected‘);
                };
                socket.onmessage = function (msg) {
                    log(msg.data);
                };
                socket.onclose = function (msg) {
                    log("Lose Connection!");
                };
            }
            catch (ex) {
                log(ex);
            }
            $("msg").focus();
        }
        function send() {
            var txt, msg;
            txt = $("msg");
            msg = txt.value;
            if (!msg) {
                alert("Message can not be empty");
                return;
            }
            txt.value = "";
            txt.focus();
            try {
                socket.send(msg);
            } catch (ex) {
                log(ex);
            }
        }
        window.onbeforeunload = function () {
            try {
                socket.send(‘quit‘);
                socket.close();
                socket = null;
            }
            catch (ex) {
                log(ex);
            }
        };
        function $(id) {
            return document.getElementById(id);
        }
        function log(msg) {
            $("log").innerHTML += "<br>" + msg;
        }
        function onkey(event) {
            if (event.keyCode == 13) {
                send();
            }
        }
    </script>
</head>
<body onload="init()">
<h3>WebSocket</h3>
<br><br>
<div id="log"></div>
<input id="msg" type="textbox" onkeypress="onkey(event)"/>
<button onclick="send()">发送</button>
</body>
</html>

测试一把:

结束语:

前端 ——》 接收器  《—— 服务端

以需求用例为基,Case&Coding两条线并行,服务(M)&消费(VC)分离,单元、接口、功能、集成四层质量管理,自动化集成、测试、交付全程支持。 3个大阶段(需求分析阶段、研发准备阶段、研发测试阶段)16个小历程(*)确定好边界,明确好对接产物,做好服务管理。

时间: 2024-10-16 14:16:16

基于python的websocket开发,tomcat日志web页面实时打印监控案例的相关文章

Python 全栈开发八 日志模块

日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变量数据的消息来描述.此外,事件也有重要性的概念,这个重要性也可以被称为严重性级别(level). 1.日志的作用 通过log的分析,可以方便用户了解系统或软件.应用的运行情况:如果你的应用log足够丰富,也可以分析以往用户的操作行为.类型喜好.地域分布或其他更多信息:如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状

python使用Django制作第一个web页面

第一步:打开pycharm,点击File>New File 选择Django,填写完点击Create创建如下图: 第二步:项目名和应用名都写的web,目录列表如下: 第三步:将web目录下面的view.py改成 from django.http import HttpResponse def hello(request): return HttpResponse("<h3>使用Django的第一个web页面</h3><hr>") 第四步:将ur

基于Python的Webservice开发(二)-如何用Spyne开发Webservice

一.功能需求 本次案例是开发一个Item的新建的WebService.IN&OUT的类型JsonDocument. 通过传入相关的参数创建Item,且相关的参数可以被缺省. 二.实现代码 引入类 from spyne import Application,rpc,ServiceBase,Iterable,Integer,Unicode #如果支持soap的协议需要用到Soap11 from spyne.protocol.soap import Soap11 #如果开发传入传出为Json需要用到J

Python全栈开发,Day16 - Web前端-JavaScript

本章内容 如何编写 变量 数据类型 其他 语句和异常 函数 前言 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应的代码,浏览器可以解释并作出相应的处理. 一.如何编写 1.JavaScript代码存在形式 1 <!-- 方式一 --> 2 <script type"text/javascript" src="JS文件" ></script>

开发移动端web页面click事件失效问题

这两天在做一个WAP页面,在chrome上模拟移动端的时候,都好好的,然而放到手机上测试时, 发现有些点击事件直接无反应,但是有些有反应: 难道是由于我页面上有用到滚动插件,里面的touch事件的preventDefault导致click失效? 于是,换成了touchSart事件试了下,效果比之前略好,但是,有重复点击事件,本小白排查了一会儿, 发现页面上明明在滚动区域有别的点击事件,为毛别的用的好好的,就这个不行,仔细对比,发现别的都是A标签, 无效的是DIV,于是,我就像发现了新大陆一样,麻

Sublime Text3介绍和插件安装——基于Python开发

Subime编辑器是一款轻量级的代码编辑器,是收费的,但是可以无限期使用.官网下载地址:https://www.sublimetext.com. Sublime Text3支持语言开发种类多样,几乎可以涵盖所有的开发语言(Java.C/C++.C#.Python.Go.JavaScript…),轻量.智能提示.界面完美.支持自定义界面和插件配置,这让很多开发者一经上手就会爱上这款便捷的Coding神器. 本文是笔者使用Sublime Text3基于Python学习.开发进行安装及相关插件的配置,

selenium2自动化测试实战--基于Python语言

自动化测试基础 一. 软件测试分类 1.1 根据项目流程阶段划分软件测试 1.1.1 单元测试 单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程. 1.1.2 集成测试 集成测试是在单元测试的基础上,先通过单元模块组装成系统或子系统,再进行测试.重点是检查模块之间的接口是否正确. 1.1.3 系统测试 系统测试是针对整个产品系统进行的测试,验证系统是否满足需求规格的定义,以及软件系统的正确性和性能等是否满足其需求规格的要求. 1.1.4 验收测试 验收测试是部署软

ubuntu16.04下基于Python的OpenCV的安装

这几天一直在学习基于Python的OpenCV ,开发环境是在Ubuntu16.04下,学习的心得就是基于Python的OpenCV开发基本上就属于函数式编程了,OpenCV提供了大多数的功能函数,以及大多数的算法封装,并不需要从头开发,不需要重复的造轮子,需要的仅仅是将各个零部件进行组装.所以学习起来相对容易一些.但是这是建立在对于Python有一定的基础上的.首先是OpenCV的安装,本文以OpenCV3.4.1的安装为例, 1.首先去官网下载http://opencv.org/releas

python实现websocket服务器,可以在web实时显示远程服务器日志

一.开始的话 使用python简单的实现websocket服务器,可以在浏览器上实时显示远程服务器的日志信息. 之前做了一个web版的发布系统,但没实现在线看日志,每次发布版本后,都需要登录到服务器上查看日志,非常麻烦,为了偷懒,能在页面点几下按钮完成工作,所以这几天查找了这方面的资料,实现了这个功能,瞬间觉的看日志什么的,太方便了,以后也可以给开发们查日志,再也不用麻烦运维了,废话少说,先看效果吧. 二.代码 在实现这功能前,看过别人的代码,发现很多都是只能在web上显示本地的日志,不能看远程