Python flask 接收json数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 1. 主配置文件app.py<br> import logging from flask import Flask, request, make_response from logConfig import * app = Flask(__name__) @app .route( "/upload" , methods = [ "POST" ]) def save_file(): res_status = request.remote_addr,request.method,request.path,request.url logger.info(res_status) if request.method = = 'POST' : print ( "start..." ) #print(request.remote_addr,request.method,request.path,request.url) # 获取json数据 print ( type (request.json)) #print(request.json['hello']) res = request.json[ 'data' ] #print(res) print ( "end..." ) logger.info(res) #return "已接收保存\n" return res else : logger.error( "非POST类型请求." ) if __name__ = = '__main__' : app.run(host = "0.0.0.0" , port = 5000 , debug = True ) #curl http://172.16.0.46:5000/upload -X POST -d '{"data":{"mem": "80","cpu":"20","disk":"50","server":{"name":"lipc","age":"18"}}}' --header "Content-Type: application/json" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 2. 日志格式配置logConfig.py import logging import logging.handlers import time LOG_PATH = r './' def getlogname(): logfilename = time.strftime( '%Y%m%d%H%M%S' ,time.localtime(time.time())) print (logfilename) return logfilename def logConfig_1(): ''' 配置 log 输出到文件 : fileName 中 ''' fileName = LOG_PATH + r "\%s.txt" % getlogname() #print(lfname) logformat = '%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s' logging.basicConfig(level = logging.DEBUG, #控制台打印的日志级别 filename = fileName, filemode = 'a' , ##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志 #a是追加模式,默认如果不写的话,就是追加模式 format = logformat #日志格式 ) print ( 'logConfig_2配置完成' ) #logConfig_1()#配置log def logConfig_2(): ''' 配置 log 输出到文件 和 控制台: 即 需要2个处理器: 1-输出到文件 2-输出到控制台 ''' logfilename = LOG_PATH + r "\%s.txt" % getlogname() logformat_1 = '%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s' #获取日志器 Logger ,并取名 'mylogger' logger = logging.getLogger( 'mylogger' ) logger.setLevel(logging.DEBUG) #统一设置log打印级别 logger.handler = [] #创建处理器 Handler:fileHandler、streamHandler fileHandler = logging.FileHandler(logfilename) #输出到文件 fileHandler.setFormatter(logging.Formatter(logformat_1)) streamHandler = logging.StreamHandler() #输出到控制台 streamHandler.setLevel(logging.ERROR) #可单独对handler设置log打印级别 logformat_2 = ' %(name)s-%(asctime)s - %(module)s-%(funcName)s[line:%(lineno)d] - %(levelname)s: %(message)s' streamHandler.setFormatter(logging.Formatter(logformat_2)) #将处理器添加到日志器中 logger.addHandler(fileHandler) logger.addHandler(streamHandler) print ( 'logConfig_2配置完成' ) return logger #全局变量 logger = logConfig_2() #配置log,在其他模块中引用的时候直接运用logger,不能再次创建 if __name__ = = '__main__' : #logging.debug('debug message %s - %d ......','hello', 1) logger.debug( 'debug message' ) logger.info( 'info message' ) logger.warning( 'warning message' ) logger.error( 'error message' ) logger.critical( 'critical message' ) |
1 2 | 3. 启动python程序 python3 app.py |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 4.终端程序<br> #将此shell脚本加入到crontab中,定时执行即可上报对应的终端数据到服务端 [root@cambricon ~]10 cat lipc- test .sh #!/bin/bash function ema_info() { sn_number=$( cat /proc/tztek_env | awk 'NR==2 {print $3}' ) disk_used=$( df -h| grep aibox| awk '{print $5}' ) Mem_used=$( free -m | sed -n '2p' | awk '{print $3/$2*100"%"}' ) ai_status=$( /home/nvidia/aibox/devops/devops_ai .sh status| awk 'NR==1 {print $3}' ) da_status=$( /home/nvidia/aibox/devops/devops_da .sh status| awk 'NR==1 {print $3}' ) up_status=$( /home/nvidia/aibox/devops/devops_up .sh status| awk 'NR==1 {print $3}' ) json= "{\"data\":{\"SN\":\"$sn_number\",\"mem\":\"$Mem_used\",\"disk\":\"$disk_used\",\"server\":{\"ai\":\"$ai_status\",\"da\":\"$da_status\",\"up\":\"$up_status\"}}}" timeout -t 15 curl -H "Content-Type: application/json" -X POST -d "${json}" "http://172.16.0.46:5000/upload" } ema_info<br><br> |
分类:
flask框架入门
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探