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控制台显示时钟的示例
Feb 24 Python
使用python实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
Python实现删除文件但保留指定文件
Jun 21 Python
详解Python中open()函数指定文件打开方式的用法
Jun 04 Python
python flask中静态文件的管理方法
Mar 20 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
Apr 18 Python
使用Python实现将list中的每一项的首字母大写
Jun 11 Python
如何基于Python制作有道翻译小工具
Dec 16 Python
通过python连接Linux命令行代码实例
Feb 18 Python
Python实现上下文管理器的方法
Aug 07 Python
Python3如何使用多线程升程序运行速度
Aug 11 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
Feb 27 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访问查询mysql数据的三种方法
2006/10/09 PHP
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
javascript eval函数深入认识
2009/02/21 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
javascript中的new使用
2010/03/20 Javascript
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
原生js实现图片层叠轮播切换效果
2016/02/02 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
python算法学习之计数排序实例
2013/12/18 Python
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
用Python实现职工信息管理系统
2020/12/30 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
总经理职责
2013/12/22 职场文书
关于安全演讲稿
2014/05/09 职场文书
大学自主招生推荐信
2014/05/10 职场文书
合理化建议书范文
2015/09/14 职场文书
新手初学Java网络编程
2021/07/07 Java/Android