当前位置:   article > 正文

python | 编写 Flask 服务和请求服务_手写一个flask服务

手写一个flask服务

1. 入门级教程

1.1编写和启动flask服务

用falsk写一个服务,包含两个功能:
(1)加法服务:给定两个数值,计算其 和;
(2)乘法服务:给定的两个值,计算器 乘积;

from flask import Flask, request, jsonify
from flask_cors import CORS
import json

app = Flask(__name__)  

@app.route('/sum', methods=['POST'])
def f_sum():
    a = json.loads(request.data)['a']
    b = json.loads(request.data)['b']
    result={"retcode": 1,
            "data": a + b
           }
    return json.dumps(result)
    
@app.route('/multiply', methods=['get'])
def f_multiply():
    a = json.loads(request.data)['a']
    b = json.loads(request.data)['b']
    result = {"retcode": 1,
              "data": a * b
             }
    return json.dumps(result)

if __name__ == "__main__":
    CORS(app=app, supports_credentials=True)
    app.run(host='0.0.0.0',port=8009,debug=True) ## 0.0.0.0表示本机IP
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

2.1调用前述编写的服务

在本机上运行上述一段代码,会启动服务。然后运行下述请求服务代码,会得到结果。

import requests, json

## 调用 加法 服务
url = 'http://0.0.0.0:8009/sum'
h1 = requests.post(url=url_local, data=json.dumps({"a": 1, "b": 2}))
print(h1.text)
## 调用 乘法 服务
url = 'http://0.0.0.0:8009/multiply'
h1 = requests.get(url=url_local, data=json.dumps({"a": 1, "b": 2}))
print(h1.text)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1.3说明

(1)@app.route(’/sum’, methods=[‘POST’]) 的理解:

可以和调用函数对比来看:
‘/sum’对应调用服务的url的格式为’IP:PORT/sum’;
‘/multiply’对应调用服务的url格式为’IP:PORT/multiply’

methods为 POST或者GET差别不大,能起到几乎一样的功能,对应调用代码用requests.post还是 requests.get;

(2)关于代码中的IP地址:

第一段代码里面有个IP:PORT=‘0.0.0.0:8009’,意思是在本机(这段代码运行的机器)上的端口8009上提供服务;
第二段代码中的IP,是请求IP:0.0.0.0(这个IP指代本机IP)的8009端口的服务;

如果第一段代码运行在任意一台远程服务器上(IP假设IP=10.1.10.211,PORT=8009),要在自己笔记本上调用该服务。第一段代码中的IP都不变;第二段代码的调用的url改成 10.1.10.211:8009。

2. 其他补充

2.1 日志

(1)用flask自带的日志接口
使用Flask APP自带的logger即可,加日志时在要加的位置加入一行:

# 假设 app = Flask(__name__)
app.logger.info("日志内容") # 其会在前面自动加上时间信息
  • 1
  • 2

(2)用flask自带的日志接口+python自带的logging把日志写到.log文件里
在flask服务文件里加上下面几句就会把日志写到flask.log文件里。

import logging
logging.basicConfig(level=logging.INFO, #控制台打印的日志级别
                    filename='flask.log',
                    filemode='a',##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志
                    #a是追加模式,默认如果不写的话,就是追加模式
                    format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
                    #日志格式
                    )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

(3)与(2)类似,还可以用下述方法实现

handler = logging.FileHandler('flask.log')
flask_app.logger.addHandler(handler)
  • 1
  • 2
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/185752
推荐阅读
相关标签
  

闽ICP备14008679号