2022年 11月 3日

python运维平台开发_python运维平台的设计

所使用的框架和代码:

django python的web框架

bootstrap 前端的样式

1.25

1.制定控制平台[server端]和被监控目标[client端]的应用层协议。

2.完成主控制程序的设计。

2.31

1.服务器程序加了个poll来加大并发量

#!/usr/bin/env python

import socket, traceback, os, sys, select

class ServerPoll():

stdmask = select.POLLERR | select.POLLHUP | select.POLLNVAL

def __init__(self, mastersocket):

“””Inition “””

self.p = select.poll()

self.mastersocket = mastersocket

self.watchread(self.mastersocket)

self.buffers = {}

self.sockets = {self.mastersocket.fileno(): self.mastersocket}

def fd2socket(self, fd):

return self.sockets[fd]

def watchread(self, fd):

“””Note interest in reading”””

self.p.register(fd, select.POLLIN | self.stdmask)

def dontwatch(self, fd):

“””Don’t watch anything in fd”””

self.p.unregister(fd)

def newconn(self, sock):

fd = sock.fileno()

“””Watching write in fd”””

self.watchread(fd)

“””Add fd to sockets dirs”””

self.sockets[fd] = sock

def readevent(self, fd):

while 1:

data = self.fd2socket().recv(4096)

#print ‘%s say: %s’ % (clientsocket.getpeername()[0], data)

if not len(data):

break

ldata = ldata + data

print sys.getsizeof(ldata)

return ldata

def errorevent(self, fd):

self.closeout(fd)

def closeout(self, fd):

self.dontwatch(fd)

try:

self.fd2socket(fd).close()

except:

pass

del self.sockets[fd]