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 collections模块实例讲解
Apr 07 Python
python处理csv数据的方法
Mar 11 Python
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
python操作 hbase 数据的方法
Dec 18 Python
Python书单 不将就
Jul 11 Python
利用Opencv中Houghline方法实现直线检测
Feb 11 Python
PyQt实现界面翻转切换效果
Apr 20 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
Jul 04 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
pd.DataFrame统计各列数值多少的实例
Dec 05 Python
python关于调用函数外的变量实例
Dec 26 Python
Python各协议下socket黏包问题原理
Apr 12 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
javascript 正则表达式相关应介绍
2012/11/27 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
Python 如何测试文件是否存在
2020/07/31 Python
Notino法国:购买香水和化妆品
2019/04/15 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
前台文员个人求职信范文
2014/01/05 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
2014年商场工作总结
2014/11/22 职场文书
刘公岛导游词
2015/02/05 职场文书
发票退票证明
2015/06/24 职场文书
初中运动会前导词
2015/07/20 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
高三数学教学反思
2016/02/18 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android