1. 程式人生 > >輕量級web框架——flask(隨筆)

輕量級web框架——flask(隨筆)

最近在使用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 [email protected]/%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()