轻量级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 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()

 

小钗有幸进入框架组做webapp的框架开发,并且基于框架的业务频道用于生产,各频道遍地开花,取得了不错的成绩, 但是,随着业务的快速迭代,框架为满足业务需求做了很多业务的事情,代码中也慢慢出现了坏味道,并且会发现有一些设计不合理的地方。 想在工作中做调整基本不可能,所依赖的第三方库搞掉也有很大的风险。这个时候小钗就萌生出开发出一套干净的轻webapp框架的想法,于是该框架便出现了。 诚然,此框架比不上Backbone,比不了anglarJS,甚至本身也会有一些问题,但是作为初步接触前端的同学,或者想在前端看到一些设计思想的同学,该框架还是有他一些优势。而且这个代码主要用于学习交流,我们带着看看不吃亏的想法,还是可以接触一下他的嘛!!!支持情况该框架是移动端框架,主要支持IOS6 、android4 框架发展第一期-MVC该框架第一期的目标是简单的webapp MVC的实现,现在也基本实现了,app支持hashChange与pushState两种方式做路由加载view,对此有兴趣的同学可以看看helloWord 关于app与页面级View的关系如下:第二期-通用工具框架第二期的想法是,完善本身一些通用的东西,比如UI组件或者简单的flip手势工具等,这里小钗不是专业的前端,就直接从线上将公司的CSS Down下来了,也用了他的Dom结构 但是,整个组件的扩展非常方便,有兴趣的同学看看UI一块的代码,UI的继承关系如下:第三期-ABTesting框架第三期目标是实现前端ABTesting方案第四期-ipad适配框架第四期的目标是一套业务代码,可以同时用于mobile与ipad第五期-Hybrid框架第五期目标是实现Hybrid交互适配,由于小钗本身不懂native开发所以此方案要靠后随机期-疑难杂症框架还会单开一个频道做一些疑难杂症处理,比如: ① fixed问题 ② 区域滚动问题 ③ app唤醒 ④ History路径问题等更多信息DEMO想简单看看demo的朋友请到:http://yexiaochai.github.io/blade/ 标签:blade​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值