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 24 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
Python抓取淘宝下拉框关键词的方法
Jul 08 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
python 对象和json互相转换方法
Mar 22 Python
如何用Python合并lmdb文件
Jul 02 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
对Python3 * 和 ** 运算符详解
Feb 16 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
python实现登录与注册系统
Nov 30 Python
python实现定时发送邮件到指定邮箱
Dec 23 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
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
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
js实现数组转换成json
2015/06/26 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
师范生实习的个人自我鉴定
2013/10/20 职场文书
六十大寿答谢词
2014/01/12 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
见习报告的格式
2014/11/04 职场文书
施工员岗位职责
2015/02/10 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
Docker官方工具docker-registry案例演示
2022/04/13 Servers