目 录

1.python利用flask框架和tornado框架搭建api微服务——HelloWorld的实现(一)

2.python利用flask框架和tornado框架搭建api微服务——结合html网页实现get和post(二)

3.python利用flask框架和tornado框架搭建api微服务——连接数据库返回带参求情结果(三)

4.python利用flask框架和tornado框架搭建api微服务——python虚拟机启动API(四)

5.python利用flask框架和tornado框架搭建api微服务——Linux下查看某个端口对应的进程并kill进程的操作(关闭API服务进程)(五)

6.python利用flask框架和tornado框架搭建api微服务——完善API文档以及API调用(六)

背 景

时不时接到客户给的一系列Excel给到的一批电子设备SN号,让我给他查一下这些设备号对应的电子设备的信息,一开始老夫也是认认真真去后台数据库给他匹配,然后查出来后再用Excel的VLOOKUP函数拼接给回客户大大,但是后来客户给的频率越来越平凡,越来越不规律,这还了得,老夫可是很忙的好吧!一开始我想给客户大大做个带参数的报表,但是考虑到客户也是架构师般的技术人才,报表着实体现不了咱的技术是不是(手动滑稽),其实另一个原因,现在深受阿里马爸爸提出的中台架构思想,那么微服务api自然也随之火热,这里就给客户利用python的flask框架和tornado框架搭建一个微服务api。
  声明:看此篇文章前,最好对http,https以及web和api有些了解 ,不然呢,也 不影响你写python,毕竟人生苦短,我用python嘛,简单!哈哈,但是如果缺少,会让你对整个项目的理解有那么点小瑕疵,废话不BB了,进入主题。

实现大家最喜欢的Hello World

用一句话证明你学过编程,当然是“HelloWorld”了,那么这里我们就实现HelloWord,但是首先既然要用flask和tornado,自然要先把两个依赖的包装上,当然微服务一般都是在虚拟机上跑的 ,也要安装python虚拟机,但是考虑到HelloWorld的本质是让我们实现简单的程序,不然你卡在装虚拟机上连HelloWorld都没实现,那不就真的从入门到放弃了了嘛,虚拟机我们后面再提,先用大家最喜欢的pip install指令把flask和tornado装上。
  装这两个指令windows和linux是通用的,但是如果你真想学好编程,建议用linux,小项目最好用vim写,为啥?因为以后工资高,前面写的慢没关系,后面就快了,尤其在校的学生党。装flask指令为:

pip install flask

安装详情为:

(base) [hadoop@shucang-10 main]$ pip install flask
Collecting flask
Using cached Flask-1.1.1-py2.py3-none-any.whl (94 kB)
Collecting itsdangerous>=0.24
Using cached itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting click>=5.1
Using cached click-7.1.1-py2.py3-none-any.whl (82 kB)
Collecting Jinja2>=2.10.1
Using cached Jinja2-2.11.1-py2.py3-none-any.whl (126 kB)
Collecting Werkzeug>=0.15
Downloading Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
  |████████████████████████████████| 298 kB 601 kB/s
Collecting MarkupSafe>=0.23

装tornado的指令:

pip install tornado

安装详情为:

(base) [hadoop@shucang-10 main]$ pip install tornado
Processing /home/hadoop/.cache/pip/wheels/7d/14/fa/d88fb5da77d813ea0ffca38a2ab2a052874e9e1142bad0b348/tornado-6.0.4-cp37-cp
Installing collected packages: tornado
Successfully installed tornado-6.0.4

HelloWorld的实现代码,就给他起个脚本名字为HelloWorld.py吧

from flask import Flask #导入flask 
app = Flask(__name__) #创建一个Flask类的app对象

@app.route('/') #设置默认 /的路由
def index(): #写默认路由的方法,当调用/路由时触发这个方法
    return '<h1>Hello World</h1>'

if __name__ == '__main__':
    app.run(port=50001) #app.run()调用这个微服务,默认端口是5000,如果要改端口,可以用    app.run(port=50001)

利用指令python helloworld.py将微服务api开起来,具体如下,成功启动后会提示Running on http://127.0.0.1:50001/,就是说明这个端口就是我们的微服务,如果要中止,就按Ctrl + C。

python helloworld.py
 * Serving Flask app "helloworld" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 174-503-774
 * Running on http://127.0.0.1:50001/ (Press CTRL+C to quit)

那只要我们打开浏览器,在地址栏输入url:http://127.0.0.1:50001/,就会自动路由到默认/路由对应的方法,触发HelloWorld,如图1。

nacos python开发微服务 python微服务开发 pdf_python


图1 浏览器访问api

简单吧,HelloWorld就实现了,但是问题来了,tornado在哪?装了没用呀?下面我们改进下代码,其实tornado主要是在启动api时候,具体代码如下,然后先Ctrl+c中止原先启动的api,再python HelloWorld.py调用启动,当然你也可以新起一个5002端口,然后浏览器上访问,一样能出现图1,我们自己写的微服务指定端口的时候注意别占用常用端口,就像你给你儿子取名,尽量别取太常见的,容易出异常。

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fenc=utf-8

from flask import Flask
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop

app = Flask(__name__)

@app.route('/') #设置默认 /的路由
def index(): #写默认路由的方法,当调用/路由时触发这个方法
    return '<h1>Hello World</h1>'

if __name__ == '__main__':
    #app.run(port=50001) #app.run()调用这个微服务,默认端口是5000,如果要改端口,可以用    app.run(port=50001)
    port=5001 #设置端口
    http_server = HTTPServer(WSGIContainer(app)) #将api的初始化对应委托给tornado的HTTPServer
    http_server.listen(port) #监听端口
    IOLoop.instance().start() #启动微服务