最新消息:因从typecho切换到wordpress, 由于转换导入问题,文章可能存在部分乱码或者排版问题,逐个排查修复中...

用Python3 + Flask 制作API接口

懒得分类 admin 1411浏览 0评论

个人项目需要。前端准备使用Vue框架,相关的API接口准备在同服务器使用Python和Flask来制作。下面是环境搭建过程。特此记录。

先是Python3的安装吧。因为主机用到了宝塔面板,安装过程我也留意到它有使用python.所以一般用的默认的系统自带的python2,所以这里要避免影响主机面板。只做python3的安装,不替换默认的python软链接。

下载相关源码到本地,并解压缩:

wget -O Python-3.7.4.tgz https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz

tar -xzvf Python-3.7.4.tgz

将python3.7安装到之前创建的目录

cd Python-3.7.4/
#
mkdir /usr/local/python37
./configure --prefix=/usr/local/python37 
make && make install

创建软链接方便之后使用

ln -s /usr/local/python37/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python37/bin/python3.7 /usr/bin/python37

[root@vultr Python-3.7.4]# python3
Python 3.7.4 (default, Sep 24 2019, 12:34:28) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

至此Python3.7已经顺利安装完毕,接着是安装虚拟环境

关于虚拟环境,这里要特别说明一下。其实虚拟环境工具有多个。比如常见的 virtualenv ,此外自python3.3版起,它也直接自带了一个虚拟环境venv, 因为这里我用的是python3.7,所以可以直接使用venv, 也可以另外安装virtualenv, 如果你使用的是python2,那么就需要再安装virtualenv了(pip install virtualenv). 这里我喜欢新鲜的东西,所以我决定直接用venv (有没有坑另说)

cd /root
python3 -m venv myAPI
source myAPI/bin/activate
(myAPI) [root@vultr ~]# 

验证一下版本和pip的路径

(myAPI) [root@vultr ~]# python -V
Python 3.7.4
(myAPI) [root@vultr ~]# pip -V
pip 19.0.3 from /root/myAPI/lib/python3.7/site-packages/pip (python 3.7)
(myAPI) [root@vultr ~]# 

好了,放心了,可以开始使用pip安装需要的包了。第一个就是Flask喽

pip install flask

可以查看并将相关的依赖保存到 requirement.txt

(myAPI) [root@vultr ~]# pip freeze
Click==7.0
Flask==1.1.1
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
Werkzeug==0.16.0
(myAPI) [root@vultr ~]# pip freeze > requirements.txt
(myAPI) [root@vultr ~]# 

后面如果有比较多的依赖包,我们也可以直接编辑requirements.txt ,然后使用 pip install -r requirements.txt 直接进行安装。这里主要先演示一下API成功与否。一个Flask已经够了,如果要进行数据库连接,还可以再安装pymysql等等模块。

新建一个api.py 文件,内容如下:

from flask import Flask 
app = Flask(__name__)

@app.route('/ping')
def index():
    return "pong"

还记得之前安装的Flask吗?它是最新的1.1.1版本。根据最新的文档: 点这里

没办法,我就是这样,喜欢给你看最新的。

(myAPI) [root@vultr ~]# vi api.py
(myAPI) [root@vultr ~]# export FLASK_APP=api
(myAPI) [root@vultr ~]# flask run
 * Serving Flask app "api"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

至此,API已经搭建完毕 访问 http://127.0.0.1:5000/ping 即可得到一个pong的回应。

[root@vultr ~]# curl http://127.0.0.1:5000/ping
pong[root@vultr ~]# 

但是这样是默认本地端口。如果要从外部访问的话,flask run时 要指定host

(myAPI) [root@vultr ~]# flask run --host=0.0.0.0

我使用的VPS安装的是CentOS7,默认使用了防火墙,需要打开端口。

[root@vultr ~]# firewall-cmd --permanent --zone=public --add-port=5000/tcp
success
[root@vultr ~]# firewall-cmd --reload
success

从公网访问成功:

直接使用Flask自带的Web服务器未免太LOW了. 安装

pip install gunicorn  
gunicorn -w 4 -b 127.0.0.1:5000 api:app
  • -w 4是指预定义的工作进程数为4,
  • -b 127.0.0.1:5000指绑定地址和端口
  • api是flask的启动python文件,app则是flask应用程序实例

转载请注明:Linc Hu » 用Python3 + Flask 制作API接口

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址