python nginx不同参数压测脚本
Server:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 from flask import Flask, request, jsonify 2 import json 3 import re 4 import os 5 import subprocess 6 7 conf_file_src = '/etc/nginx/nginx.conf' 8 restart_shell = 'sudo service nginx restart' 9 10 app = Flask(__name__) 11 12 # 重置conf文件 13 # conf文件中要测试的值置为 ###arg### 14 def reset_conf(file_name, data): 15 # 打开模板文件 16 file = open(file_name, 'r') 17 file_temp = file.read() 18 for key in data: 19 # 替换要调试的参数 20 re_model = re.compile(r'###') 21 args = re.findall(r'###\S' + key + '###', file_temp) 22 23 for arg in args: 24 print(arg) 25 file_temp = file_temp.replace(arg, data[key], 100) 26 27 # 写入新的配置文件 28 file_conf = open(conf_file_src, 'w+') 29 file_conf.write(file_temp) 30 file_conf.close() 31 32 33 # 重启nginx服务 34 def reset_service(): 35 # 重启service 36 res = os.popen(restart_shell).readline() 37 return 'Result: ' + res 38 39 # url : xxx.xxx.xxx.xxx:5000/restart 40 # 参数: 41 # data: {'arg1':'v1','arg2':'v1']} 42 # 返回:转发执行结果 43 @app.route('/restart', methods=['POST']) 44 def restart(): 45 data = json.loads(request.get_data(as_text=True)) 46 print(data) 47 reset_conf("nginx.conf.template", data) 48 result = reset_service() 49 return result 50 51 if __name__ == '__main__': 52 app.run()
Client:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import requests 2 import json 3 4 url = "http://127.0.0.1:5000/restart" 5 field = 'sendfile' 6 data = ["on", "off"] 7 8 def reset(): 9 for s in data: 10 #发送请求修改nginx配置文件 11 json = '{"' + field +'":"' + s +'"}' 12 res = requests.post(url=url, data='{"sendfile":"on"}') 13 print(json) 14 print(res) 15 print(res.content) 16 17 #压力测试 18 # wrk ... 19 20 if __name__ == '__main__': 21 reset()