美文网首页
python flask框架

python flask框架

作者: 安静的码农 | 来源:发表于2020-01-02 22:23 被阅读0次

    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框架

          本文链接:https://www.haomeiwen.com/subject/ueraoctx.html