用户:
lsk666666查看: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的内容,但是并没有修改成功。

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
评论
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
评论
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
评论