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 相关文章推荐
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 Python
Matplotlib 生成不同大小的subplots实例
May 25 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
python爬虫爬取监控教务系统的思路详解
Jan 08 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 Python
Python爬虫抓取指定网页图片代码实例
Jul 24 Python
Python爬虫之Selenium实现窗口截图
Dec 04 Python
python利用appium实现手机APP自动化的示例
Jan 26 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数据类型判断函数有哪些
2013/09/23 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
Jquery实现搜索框提示功能示例代码
2013/08/13 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
python3中函数参数的四种简单用法
2018/07/09 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
Python LMDB库的使用示例
2021/02/14 Python
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
大三预备党员入党思想汇报
2014/01/08 职场文书
幼儿园大班新学期寄语
2014/01/18 职场文书
实施意见格式范本
2015/06/05 职场文书
国家助学金受助感言
2015/08/01 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书