使用Flask模拟服务器返回(二)

背景:继续使用Flask模拟服务器的返回。在此中,遇到一些新的问题。

环境:Python(3.6.6)+ Flask(1.0.2)+ Flask-SQLAlchemy(2.3.2)+ gunicorn(19.9.0)

安装:

参考:使用Flask模拟服务器返回(一)

基本步骤同(一)。这里记录下中间遇到的一些问题。

问题:

1.添加返回头信息。

1)将token添加到response的头部。

response.headers['X-Subject-Token']='abcde...'

2)添加接受的格式信息

response.headers['Content-Type']='application/json; charset=UTF-8'

2.返回中存在中文字符

if __name__ == '__main__':

    app.config['JSON_AS_ASCII'] = False

    app.run(host='0.0.0.0', port=<port>, debug=True)

3.多个app的情况

这里,由于拿token走的是port1,其余接口走的是port2。而Flask是单线程的,因此这里用了两种方法来解决这个问题。

1)方法一:这个方法比较笨,但是简单有效。即,把走token的接口放到script1.py,其余接口放到script2.py。

script1.py:

if __name__ == '__main__':

    app.config['JSON_AS_ASCII'] = False

    app.run(host='0.0.0.0', port=<port1>, debug=True)

script2.py:

if __name__ == '__main__':

    app.config['JSON_AS_ASCII'] = False

    app.run(host='0.0.0.0', port=<port2>, debug=True)

找两个客户端分别启动:

# python36 script1.py

# python36 script2.py

2)方法二:使用gunicorn

gunicorn的安装细节找度娘问一下即可。本人这里直接使用pip36 install gunicorn进行安装。

A. 脚本中无论走哪个port的接口都放在同一文件中(这里文件名:test_flask.py)

B. 不同端口的app定义和使用不同。

     app01 = Flask('app01')          // 供port1使用

     app02 = Flask('app02')          // 供port2使用

使用时,走port1的端口路由就这样写:

      @app01.route()

走port2的端口路由就这样写:

      @app02.route()

C. 去掉main方法。

D. 在命令行运行:

# gunicorn -b 0.0.0.0:<port1> test_flask:app &             // & 表示放到后台运行

# gunicorn -b 0.0.0.0:<port2> test_flask:app &             // & 表示放到后台运行

4.返回体和状态码

1)无响应体返回时

return None

2)返回指定的状态码

return "OK", 204

5.条件查询

接口: GET /api/resources/<id>

表的类:

class T_Res(db.Model):

       __tablename__ = 't_res'

       ......           # 表的定义省略

@app.route('/api/resources/<req_id>', methods=[GET])

def get_resource(req_id):

       item_list = T_Res.query.filter(T_Res.id == req_id).first()

       res = {

                "data": {

                       res_id: item_list[0].id                # 查询出的数据组成了一个list

                       res_name: item_list[0].name

             }

       }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值