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中几个常用的类方法
Apr 08 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
May 29 Python
python通过微信发送邮件实现电脑关机
Jun 20 Python
python将txt文件读取为字典的示例
Dec 22 Python
对Python3 序列解包详解
Feb 16 Python
Python中Numpy ndarray的使用详解
May 24 Python
tensorflow实现从.ckpt文件中读取任意变量
May 26 Python
Python自动化之UnitTest框架实战记录
Sep 08 Python
Django restful framework生成API文档过程详解
Nov 12 Python
virtualenv隔离Python环境的问题解析
Jun 21 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的FTP学习(二)[转自奥索]
2006/10/09 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
2016/01/08 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
一个简单的js树形菜单
2011/12/09 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
Python操作MySQL简单实现方法
2015/01/26 Python
Python实现FTP文件传输的实例
2019/07/07 Python
详解python中__name__的意义以及作用
2019/08/07 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
python删除某个目录文件夹的方法
2020/05/26 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
html5 Canvas画图教程(5)—canvas里画曲线之arc方法
2013/01/09 HTML / CSS
Nike墨西哥官网:Nike MX
2020/08/30 全球购物
俄罗斯苹果优质经销商商店:iPort
2020/05/27 全球购物
报关简历自我评价怎么写
2013/09/19 职场文书
统计系教授推荐信
2014/02/28 职场文书
植树节口号
2014/06/21 职场文书
2015年调度员工作总结
2015/04/30 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
地心历险记观后感
2015/06/15 职场文书
详解Redis主从复制实践
2021/05/19 Redis
tensorflow中的数据类型dtype用法说明
2021/05/26 Python