python+flask实现API的方法


Posted in Python onNovember 21, 2018

本文为大家分享了python+flask实现API的具体方法,供大家参考,具体内容如下

Flask 框架

#-*-coding:utf-8-*-
 
#pip install flask
#pip install flask-restful
 
from flask import Flask
 
app = Flask(__name__)
 
@app.route('/')
def index():
  return "hello world!"
 
if __name__ == '__main__':
  app.run(debug=True)

pycharm运行该程序后,在浏览器输入http://127.0.0.1:5000/,即可看到一个网页:

python+flask实现API的方法

Flask + flask_restful创建一个简单的应用程序:

from flask import Flask
from flask_restful import Resource,Api
 
app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
  def get(self):
    return {"hello":"world"}
 
api.add_resource(HelloWorld,'/')
 
if __name__ == '__main__':
  app.run(debug=True)

python+flask创建API: 获取post请求传递的json数据

from flask import Flask,abort,jsonify,make_response,request
 
app = Flask(__name__)
 
@app.route('/analyze/' ,methods=['POST'])
def call_wiscan_analyze():
  if not request.json or not 'path' in request.json:
     abort(400)
  path = request.json['path']
 
 
if __name__ == '__main__':
  app.run(port='50055',debug=True)

请求:

from requests import post
 
if __name__ == '__main__':
  path='"F:/nb_org_data/86574FG01/2013/1029/0008/86574FG01201310290008.img"'
  ret = post('http://localhost:50055/analyze/',json={'path':path})
  print(ret.text)

将API封装为win32服务

import win32serviceutil
import win32service
import win32event
import win32timezone
from flask import Flask,abort,jsonify,make_response,request
import threading
 
app = Flask(__name__)
_ONE_DAY_IN_SECONDS = 60 * 60 * 24
 
@app.route('/analyze/' ,methods=['POST'])
def call_wiscan_analyze():
  if not request.json or not 'path' in request.json:
     abort(400)
  path = request.json['path']
 
def thread_target():
  app.run(port='50055', debug=True)
 
class GRPCWin32Client(win32serviceutil.ServiceFramework):
  _svc_name_ = 'GRPCWin32Client'
  _svc_display_name_ = 'Nuctech GRPC Client'
  _svc_description_ = 'wiscan grpc client'
 
  def __init__(self, args):
    win32serviceutil.ServiceFramework.__init__(self, args)
    self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
    #self.logger = self._getLogger()
    self.run = True
 
  def SvcDoRun(self):
    th = threading.Thread(target=thread_target)
    th.start()
    try:
      while self.run:
        time.sleep(_ONE_DAY_IN_SECONDS)
 
    except KeyboardInterrupt:
      pass
 
    pass
 
  def SvcStop(self):
    self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
    win32event.SetEvent(self.hWaitStop)
    self.run = False
 
if __name__ == '__main__':
  import sys
  import servicemanager
  if len(sys.argv) == 1:
    try:
      evtsrc_dll = os.path.abspath(servicemanager.__file__)
      servicemanager.PrepareToHostSingle(GRPCWin32Client)
      servicemanager.Initialize('GRPCWin32Client', evtsrc_dll)
      servicemanager.StartServiceCtrlDispatcher()
    except win32service.error as details:
      import winerror
      if details == winerror.ERROR_FAILED_SERVICE_CONTROLLER_CONNECT:
        win32serviceutil.usage()
  else:
    win32serviceutil.HandleCommandLine(GRPCWin32Client)

注意:

启动一个线程运行app.run(),否则安装完win32服务,启动服务后,无法停止服务,因为app内部循环没有结束!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
将Python代码打包为jar软件的简单方法
Aug 04 Python
深入解析Python中的urllib2模块
Nov 13 Python
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
Jan 09 Python
pycharm 将python文件打包为exe格式的方法
Jan 16 Python
python Pillow图像处理方法汇总
Oct 16 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
python实现五子棋程序
Apr 24 Python
python openpyxl模块的使用详解
Feb 25 Python
python实现事件驱动
Nov 21 #Python
python事件驱动event实现详解
Nov 21 #Python
python程序封装为win32服务的方法
Mar 07 #Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 #Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 #Python
使用50行Python代码从零开始实现一个AI平衡小游戏
Nov 21 #Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 #Python
You might like
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
基于Vue单文件组件详解
2017/09/15 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
JavaScript实现原型封装轮播图
2020/12/27 Javascript
python处理cookie详解
2014/02/07 Python
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
Python的多态性实例分析
2015/07/07 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
对python生成业务报表的实例详解
2019/02/03 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
Puppeteer使用示例详解
2019/06/20 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
汽车技术服务英文求职信范文
2014/01/02 职场文书
养殖行业的创业计划书
2014/01/05 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
中学教师自我鉴定
2014/02/07 职场文书
学习普通话的体会
2014/11/07 职场文书
教师节校长致辞
2015/07/31 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python