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 相关文章推荐
在Django的URLconf中进行函数导入的方法
Jul 18 Python
用Python写冒泡排序代码
Apr 12 Python
python机器学习之贝叶斯分类
Mar 26 Python
Python实现的读取电脑硬件信息功能示例
May 30 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
jupyter notebook清除输出方式
Apr 10 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 Python
Keras搭建自编码器操作
Jul 03 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
python自动生成sql语句的脚本
Feb 24 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 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缩略图生成程式(需要GD库支持)
2007/03/06 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
php之可变变量的实例详解
2017/09/12 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
javascript常用方法总结
2015/05/14 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
python实现稀疏矩阵示例代码
2017/06/09 Python
numpy基础教程之np.linalg
2019/02/12 Python
python3.5安装python3-tk详解
2019/04/26 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
tensorflow没有output结点,存储成pb文件的例子
2020/01/04 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
一套.net面试题及答案
2016/11/02 面试题
超市中秋节活动方案
2014/02/12 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
法律意见书范本
2015/06/04 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang