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 21 Python
python进阶教程之函数对象(函数也是对象)
Aug 30 Python
python通过pil为png图片填充上背景颜色的方法
Mar 17 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
对python 操作solr索引数据的实例详解
Dec 07 Python
对python周期性定时器的示例详解
Feb 19 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
python主线程与子线程的结束顺序实例解析
Dec 17 Python
python模式 工厂模式原理及实例详解
Feb 11 Python
python cookie反爬处理的实现
Nov 01 Python
Python实现滑雪小游戏
Sep 25 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 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之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
Python实现Linux下守护进程的编写方法
2014/08/22 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
使用python和pygame绘制繁花曲线的方法
2018/02/24 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
美国战术品牌:5.11 Tactical
2019/05/01 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
项目工作说明书
2014/07/29 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
党员个人年度总结
2015/02/14 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
中学推普周活动总结
2015/05/07 职场文书
小学生教师节广播稿
2015/08/19 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS