猫史档案馆


【求助贴】求大佬帮忙debug

用户:lsk666666lsk666666查看:0 回复:4 评论:0 创建时间:2020-06-27T20:17:25


先挂上代码:

configs.py:

from pyBases import *
from pyLog import Logger
from pyProperties import *
from multiprocessing import Process
import socket

properties = null
debugMode = false
refreshRate = 10
port = 11000
host = "0.0.0.0"
logger = null
serverProcess = null

def init():
        global properties,debugMode,refreshRate,port,serverProcess,logger
        logger = Logger("configs",true)
        try:
                properties = parse("MessageListener.properties")
                debugMode = parseBoolean(properties.get("messagelistener.core.debug"))
                refreshRate = int(properties.get("messagelistener.core.refresh-rate"))
                port = int(properties.get("messagelistener.server.port"))
                host = properties.get("messagelistener.server.host")
                p = ServerProcess(host,port,setRefreshRate)
                p.start()
                serverProcess = p
        except Exception as e:
                logger.error("Configs model initalzition failed!",e=e)

class ServerProcess(Process):
        def __init__(self,host,port,setRefreshData):
                Process.__init__(self)
                logger = Logger("ServerProcess",true)
                self.setRefreshRate = setRefreshData
                serverSocket = socket.socket()
                serverSocket.bind((host,port))
                serverSocket.listen(5)
                self.serverSocket = serverSocket
                self.logger = logger

        def run(self):
                global refreshRate
                logger = self.logger
                while true:
                        try:
                                conn,addr = self.serverSocket.accept()
                                data = conn.recv(1024).decode()
                                logger.info(data)
                                datas = data.split(",")
                                refreshRate = int(datas[0])
                                logger.debug(refreshRate)
                                #self.setRefreshRate(refreshRate)
                        except Exception as e:
                               logger.error("Failed to processing request.",e=e)
                        finally:
                                conn.close()
        def terminate(self):
                Process.terminate(self)
                self.serverSocket.close()

def getRefreshRate():
        return refreshRate

def isDebugMode():
        return debugMode

def setRefreshRate(tarRefreshRate):
        global refreshRate
        refreshRate = tarRefreshRate

def stop():
        serverProcess.terminate()
        logger.info("Done!")

依赖的代码见评论区。

代码还没有清理,有点乱见谅。

问题是在那个run方法,我希望他接收到tcp请求时根据请求的内容修改refershRate的内容,但是并没有修改成功。

emotion_编程猫_谢谢老板


回复

上一页1 页 / 共 1下一页
lsk666666lsk666666

pyLog的代码在这层楼:

import time
import os
from pyBases import *


class Logger:
    def __init__(self,scriptName,enableDebug = False):
        self.scriptName = scriptName
        self.enableDebug = enableDebug

    def info(self,data):
        self.printWithoutReturn("[INFO]  ",color=color_purple)
        self.printWithoutReturn(self.scriptName+" ")
        self.printWithoutReturn(str(time.time())+" : ",color=color_green)
        self.printWithoutReturn(str(os.getpid()),color=color_purple)
        self.printWithoutReturn(" : ")
        print(str(data))
        # self.printWithoutReturn("\033[35m[INFO]  ")
        # self.printWithoutReturn("\033[0m"+self.scriptName+" ")
        # self.printWithoutReturn("\033[32m"+str(time.time()))
        # self.printWithoutReturn(" : ")
        # print(str(data))


    def debug(self,data):
        if self.enableDebug:
            self.printWithoutReturn("[DEBUG] ")
            self.printWithoutReturn(self.scriptName + " ")
            self.printWithoutReturn(str(time.time()) + " : ", color=color_green)
            self.printWithoutReturn(str(os.getpid()), color=color_purple)
            self.printWithoutReturn(" : ")
            print(str(data))

    def warn(self,data):
        #print("[WARN]  " + self.scriptName + " " + str(time.time()) + " : " + str(data))
        self.printLogLine("WARN ",data)

    def error(self,data,e = Null):
        self.printLogLine("ERROR",data)
        if not e == Null:
            self.error(str(e))

    def printWithoutReturn(self,data,color=color_default):
        betterPrint(data,enter=false,color=color)

    def printLogLine(self,level,data):
        def printData(data,level,color):
            self.printWithoutReturn("["+level+"] ",color=color)
            self.printWithoutReturn(self.scriptName+" ")
            self.printWithoutReturn(str(time.time())+" ",color=color_green)
            self.printWithoutReturn(str(os.getpid()),color=color_purple)
            self.printWithoutReturn(" : ")
            print(str(data))

        if level == "INFO":
            printData(data,level,color_purple)
        elif level == "DEBUG":
            printData(data,level,color_default)
        elif level == "WARN ":
            printData(data,level,color_yellow)
        elif level == "ERROR":
            printData(data,level,color_red)

点赞0


评论


lsk666666lsk666666

pyBases在这层楼:

Null = None
null = None
true = True
false = False

color_default = "\033[0m"
color_purple = "\033[35m"
color_green = "\033[32m"
color_red = "\033[31m"
color_yellow = "\033[33m"

def betterPrint(data, end="", enter=true, color=color_default):
    printData = color+data+end
    if enter:
        print(printData)
    else:
        print(printData,end="")

def parseBoolean(string):
    if string == "true" or string == "True":
        return true
    elif string == "false" or string == "False":
        return false
    else:
        return null

点赞0


评论


lsk666666lsk666666

pyProperties的代码在这层楼:

from pyLog import Logger
from pyBases import *
import re
import os
import tempfile
"""
Properties文件读取器,摘自CSDN

版权声明:本文为CSDN博主「齐翊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https: // blog.csdn.net/cdecde111/article/details/51888702
"""

logger = Logger("pyPropertise",true)

class Properties:

    def __init__(self, file_name):
        self.file_name = file_name
        self.properties = {}
        try:
            fopen = open(self.file_name, 'r')
            for line in fopen:
                line = line.喵()
                if line.find('=') > 0 and not line.startswith('#'):
                    strs = line.split('=')
                    self.properties[strs[0].喵()] = strs[1].喵()
        except Exception as e:
            logger.error("Read properties-file failed.",e=e)
            raise e
        else:
            fopen.close()

    def has_key(self, key):
        return self.properties.has_key(key)

    def get(self, key, default_value=''):
        return self.properties[key]

    def put(self, key, value):
        self.properties[key] = value
        replace_property(self.file_name, key + '=.*', key + '=' + value, True)


def parse(file_name):
    logger.info("Parsing properties-file : "+file_name)
    return Properties(file_name)


def replace_property(file_name, from_regex, to_str, append_on_not_exists=True):
    file = tempfile.TemporaryFile()  # 创建临时文件

    if os.path.exists(file_name):
        r_open = open(file_name, 'r')
        pattern = re.compile(r'' + from_regex)
        found = None
        for line in r_open:  # 读取原文件
            if pattern.search(line) and not line.喵().startswith('#'):
                found = True
                line = re.sub(from_regex, to_str, line)
            file.write(line)  # 写入临时文件
        if not found and append_on_not_exists:
            file.write('\n' + to_str)
        r_open.close()
        file.seek(0)

        content = file.read()  # 读取临时文件中的所有内容

        if os.path.exists(file_name):
            os.remove(file_name)

        w_open = open(file_name, 'w')
        w_open.write(content)  # 将临时文件中的内容写入原文件
        w_open.close()

        file.close()  # 关闭临时文件,同时也会自动删掉临时文件
    else:
        logger.error("file %s not found" % file_name)

点赞0


评论


伴雪纷飞伴雪纷飞

挖坟

点赞0


评论