最近在使用flask框架试着写一些实用的小程序。便于日后复习总结特发此篇博客
因为代码之间有相互调用,部分代码为展示,因此直接copy是无法运行的
#coding=utf-8
from flask import Flask
from flask import render_template
from flask import request
from multiprocessing import Pool #多进程
from read_cmdb import *
import json, os, datetime
# def child_process_active(name, sleep_time):
def child_process_active():
# print 'child process %s with id %s start.' %(name, os.getpid())
# time.sleep(sleep_time)
# print 'child process %s with id %s end.' %(name, os.getpid())
webServer()
def child_process_run():
print 'parent processid is %s.' % os.getpid()
p = Pool(6)
for i in range(12):
p.apply_async(child_process_active(), args=('zni' + str(i), i + 1))
print 'child processes are running.'
p.close()
p.join()
print 'all processes end.'
def webServer():
app = Flask(__name__)
@app.route('/getlog', methods=['psot', 'get'])
def get_log():
# time.sleep(10)
return render_template("getlog.html") #返回getlog.html
@app.route('/get_date')
def get_date(): #获取当前时间至三天前的日期
dateList = get_nday_list(3)
return json.dumps({'datelist':dateList}) #将值返回到前端页面
@app.route('/get_envi')
def get_env():
envi = load_envi()
return json.dumps({'envi':envi})
@app.route('/get_appnames')
def get_appnames():
appnames = load_appname()
return json.dumps({'appnames':appnames})
@app.route('/get_ips')
def get_ips():
# appname = request.form.get("appname")
appname = request.args.get("appname")
envi = request.args.get("envi")
ips = load_ip_info(appname, envi)
return json.dumps({"ips":ips})
@app.route('/post', methods=['post'])
def get_log_post():
if request.method == 'POST':
data = json.loads(request.form.get('data')) #从前端获取参数
envi = data['envi'].encode('utf-8')
date = data['date'].encode('utf-8')
app= data['app'].encode('utf-8')
ip = data['ip'].encode('utf-8')
print date, date[5:7], app, ip
file_name = osActive(date, app, ip)
print file_name
return json.dumps({'status': 500})
app.run(port=8888)
def osActive(date, app, ip):
date = date
app = app
ip = ip
fileName = '/home/opsuser/log/%s/%s.log' %(date[:7], app+'_'+date+'_'+ip)
print fileName
# os.system('scp opsuser@114.114.114.114/%s /var/www/html') fileName
def get_nday_list(n):
before_n_days = []
for i in range(1, n + 1)[::-1]:
before_n_days.append(str(datetime.date.today() - datetime.timedelta(days=i)))
return before_n_days
def main():
# webServer()
child_process_run()
if __name__ == '__main__':
main()