python flask框架

1、新建一个目录cdbinterfacetask

2、在该目录下编辑run.py文件,文件内容如下:
from app import app #从app目录引入app模块
app.run(host='127.0.0.1',port=5000) #定义服务的端口为5000

3、在cdbinterfacetask目录下建立app目录,app目录下创建init.py(from app import app实际上import的就是init.py的内容)

init.py文件内容为:
from flask import Flask #引入Flask类
from config import load_config #从config目录import load_config模块
app = Flask(name) #创建一个Flask的实例
config = load_config()
app.config.from_object(config) #from_object()是flask获取配置项的方法,表示从config变量获取配置项

from api import api_views #从api目录下import api_views模块

4、config目录下面的内容如下(config目录和app目录是同一级目录)
init.py init.pyc default.py default.pyc production.py production.pyc

init.py文件内容为:

encoding: utf-8

def load_config():
""" load config information """
from production import ProductionConfig #从production.py import ProductionConfig模块
return ProductionConfig

production.py文件内容为:

encoding: utf-8

from default import * #从default.py import所有模块

class ProductionConfig(Config): #ProductionConfig继承Config类,Config类在default.py里面定义了,表示ProductionConfig类可以引用Config类定义的内容
DB_USER = 'dba_readonly'
DB_PASS = '2017@readonly'
ACCESS_DB = 'cdb2'

default.py文件内容为:

encoding: utf-8

class Config():
AUTHOR='vivaxiao'

5、在/cdbinterfacetask/app/目录下建立api目录

6、在api目录下建立init.py,但是我们的init.py内容为空,init.py存在的意义仅仅是为了让api目录成为一个可以import的模块如果该文件有内容,那么就导入该文件中的内容,如果没有,那么就会导入该目录下的其他模块.比如在api目录下,init.py为空,那么from api import api_views代表的含义就是导入api目录下的api_views.py

7、编辑api_views.py (该py脚本就是实际工作的脚本)

!/usr/bin/env python

encoding: utf-8

import json

from app import app
from flask import request
from flask import jsonify #python flask设置返回json数据,需要用到flask的jsonify模块,对json数据进行jsonify(json_data),表示返回一个json response

cluster_dict = {'上海金桥':49}
ossdb_dict = {'上海金桥':'xxx.xxx.xxx.xxx:3306'}

@app.route('/api/tasks')
def api_tasks():

    """
    传入cluster_id获取该集群的异常任务
    
    """
    db_user    = app.config.get("DB_USER")
    db_passwd  = app.config.get("DB_PASS")
    access_db  = app.config.get("ACCESS_DB")

    cluster_id = request.args.get('cluster_id')

    for key,value in cluster_dict.items():
            if str(value) == str(cluster_id):
                    cluster_name = key
                    print cluster_name
                    for k,v in ossdb_dict.items():
                            if k == cluster_name:
                                    #print v
                                    db_host = v.split(':',1)[0]
                                    db_port = v.split(':',1)[1]
                                    print db_host
                                    print db_port
                                    data =  {"db_host":db_host,"db_port":db_port,"db_user":db_user,"db_passwd":db_passwd,"access_db":access_db}
                                    json_data = json.dumps(data)
                                    print json_data
                                    return jsonify(json_data)

curl get方法传递参数,访问服务:
curl http://127.0.0.1:8082/api/tasks?cluster_id=61
"{"db_passwd": "abcdexxx@#$", "db_user": "dba", "db_host": "192.168.1.1", "access_db": "testdb", "db_port": "3306"}"

你可能感兴趣的:(python flask框架)