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使用分治法实现求解最大值的方法
May 12 Python
python各种语言间时间的转化实现代码
Mar 23 Python
python中kmeans聚类实现代码
Feb 23 Python
Python操作MySQL模拟银行转账
Mar 12 Python
Python OpenCV处理图像之图像像素点操作
Jul 10 Python
对python3 一组数值的归一化处理方法详解
Jul 11 Python
python 通过麦克风录音 生成wav文件的方法
Jan 09 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
python OpenCV GrabCut使用实例解析
Nov 11 Python
浅谈python3 构造函数和析构函数
Mar 12 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
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
VUE实现移动端列表筛选功能
2019/08/23 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
用Python实现一个简单的线程池
2015/04/07 Python
python 基础教程之Map使用方法
2017/01/17 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
win10下tensorflow和matplotlib安装教程
2018/09/19 Python
python如何求解两数的最大公约数
2018/09/27 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
pycham查看程序执行的时间方法
2018/11/29 Python
Python偏函数实现原理及应用
2020/11/20 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
同事打架检讨书
2014/02/04 职场文书
欢送退休感言
2014/02/08 职场文书
文明倡议书范文
2014/04/15 职场文书
横幅标语大全
2014/06/17 职场文书
球队口号
2014/06/18 职场文书
安全承诺书格式范本
2015/04/28 职场文书
2015年妇幼卫生工作总结
2015/05/23 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
oracle数据库去除重复数据
2022/05/20 Oracle