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]
         


你可能感兴趣的:(python运维平台的设计)