Python flask apipost

python flask docker apipost

使用flask编写端口,然后使用docker部署,最后使用apipost测试。

1 flask 学习

首先安装flask:

sudo pip3 install Flask

1.1 从“hello world!”开始

from flask import Flask
app = Flask(__name__)
@app.route('/')  #实例化
def hello_world():
    return 'Hello World!'
if __name__ == '__main__':
    app.run()

运行后的结果:

Running on http://0.0.0.0:7005/ (Press CTRL+C to quit)

在浏览器中打开这个网址,即可显示

1.2 进阶版

可以使用其他任何一台电脑访问

from flask import Flask
app = Flask(__name__)
@app.route('/lf/imagetest') #设置路由
def hello_world():
    return 'Hello World!'
if __name__ == '__main__':
    app.run()
    '''
    默认为ip:http://127.0.0.1,端口为5000,只能在本地访问
    可以进修改host="0.0.0.0",其他电脑也可以访问
    debug=True,开启调试模式
    threaded=True,开启多线程
    '''
    app.run(host="0.0.0.0", port=7005, debug=True, threaded=True)

1.3 使用APIpost测试

图片和字符串,通过json格式

post:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)

# -*- coding: utf-8 -*-
from flask import Flask, jsonify, request
from PIL import Image
import base64
import time

app = Flask(__name__)

@app.route('/lf/imagetest', methods=['POST'])
def img_test():  #收到一个图片,并保存成为
    if request.method == 'POST':
        data = request.get_json()
        print(data)
        img = data["image"]
        image = base64.b64decode(img)
        # 将图片保存本地
        file = open('save/1.jpg', 'wb')
        file.write(image)
        file.close()![在这里插入图片描述](https://img-blog.csdnimg.cn/05d7bb7da316443187294527188fcdd1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaW5nX18=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)


    return 'success!'

@app.route('/lf/txttest', methods=['POST'])
def txt_test():
    if request.method == 'POST':
        txt = request.get_json()
        print(txt)
        return 'success!'

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=7005, debug=False, threaded=True)

接下来使用apipost进行文本测试,如图:
在这里插入图片描述pycharm中输出:
在这里插入图片描述apipost进行图片测试,这里使用base64的格式,在网上找一个转换网址
https://c.runoob.com/front-end/59/
将图片转为base64
在这里插入图片描述复制base64后面的一长串字符到apipost的json中:
在这里插入图片描述可以看到成功了,在本地的save文件夹中也出现了这张图片

在这里插入图片描述

2 docker

这里事先准备了一个镜像,使用sudo docker images查看当前已有的镜像
输出:

REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
mm_cpu       latest    d739c1afc387   8 days ago   4.35GB

使用mm_cpu这个来构建一个容器:

sudo docker run --name flask_test -itd -p 5000:5000 -v /home/xdd/LF/code/flask:/meflask  mm_cpu /bin/bash
--name 容器的名字
-v path:path 挂载目录
mm_cpu 镜像名称
-p 5000:5000, 端口映射

成功创建容器并挂载目录到meflask下,输出:

xdd@xdd-H510M-T-M-2:~$ sudo docker run --name flask_test -v /home/xdd/LF/code/flask:/meflask -it mm_cpu /bin/bash
root@12a6287b3f2e:/# ls
bin  boot  dev	etc  home  lib	lib64  media  meflask  mmdetection  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@12a6287b3f2e:/# cd meflask/
root@12a6287b3f2e:/meflask# ls
__pycache__  client.py	flask_demo.py  flask_demo1.py  flask_helloworld.py  get_post.py  nohup.out  save  test
root@12a6287b3f2e:/meflask# 

常用的命令:

开启容器:docker start id
停止容器:docker stop id
停止后重启容器:docker restart id
删除容器:docker rm -f  id

进入容器:
1)  docker attach id
2)   docker exec -it id /bin/bash     #退出容器不会停止容器

导出容器:docker export id > name.tar
docker save -o [image].tar
导入容器为镜像:docker load <  name.tar
docker load -i [image].tar

3 测试

1 创建容器
目录挂载为meflask,端口映射为5000,容器ID为35cc6c1535a9

root@xdd-H510M-T-M-2:/home/xdd# sudo docker run --name flask_test -itd -p 5000:5000 -v /home/xdd/LF/code/flask:/meflask  mm_cpu /bin/bash
35cc6c1535a9caa38301bc98322cb0c6aeedb977163e7f07a2a36b3b58d1a2e5
root@xdd-H510M-T-M-2:/home/xdd# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS                                       NAMES
35cc6c1535a9   mm_cpu    "/bin/bash"   18 seconds ago   Up 15 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   flask_test

进入容器:

root@xdd-H510M-T-M-2:/home/xdd# docker exec -it 35cc6c1535a9 /bin/bash
root@35cc6c1535a9:/# ls
bin  boot  dev	etc  home  lib	lib64  media  meflask  mmdetection  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@35cc6c1535a9:/# cd meflask
root@35cc6c1535a9:/meflask# ls
__pycache__  client.py	flask_demo.py  flask_demo1.py  flask_helloworld.py  get_post.py  nohup.out  save  test

运行flask_helloworld.py程序,这里将flask_helloworld中的端口改为了5000:

   app.run(host="0.0.0.0", port=5000, debug=True, threaded=True)

运行:

root@35cc6c1535a9:/meflask# python flask_demo1.py
 * Serving Flask app 'flask_demo1' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://172.17.0.2:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 468-437-879

在AIpost 中测试:
修改端口为5000
在这里插入图片描述显示测试成功!

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值