精华内容
下载资源
问答
  • python 封装API接口

    万次阅读 2019-04-04 16:21:06
    3.对接口进行封装 import os import tornado.ioloop import tornado.web import tornado.httpserver import logging from tornado.escape import json_decode, json_encode, utf8 from phone_frequency_analysis ...

    1.对一天中通话,按时段进行分析
    输入数据为.txt文件,数据部分展示如下:

    u110107_02169228380_530005_20190228125930_61AA.mp3
    u110107_18895672550_530005_20190228165337_FFFFE06F.mp3
    u110107_18895672550_530005_20190228165433_FFFFE0DC.mp3
    u110107_18895672550_530005_20190228165854_FFFF9CB8.mp3
    u110107_18895672550_530005_20190228180136_FFFFB997.mp3
    u110107_18895672550_530005_20190228194425_14A8.mp3
    u110107_18995436895_530005_20190228143208_FFFF8EDE.mp3
    u110107_58033018_530005_20190228150349_5C59.mp3
    u110108_530006_02160383434_20190228121640_5208.mp3
    u110108_530006_02160383434_20190228134648_3117.mp3
    u110108_530006_02160389247_20190228083435_FFFF803B.mp3
    u110108_530006_02160389247_20190228084107_FFFF8232.mp3
    u110108_530006_02160389247_20190228084154_FFFFCC23.mp3
    u110108_530006_02160389263_20190228120132_4BAC.mp3
    

    2.分析如下,返回数据为每个小时对应的通话量

    import numpy as np
    def phone_frequency_analysis():
        with open("data/mp3_filenames.txt",'r',encoding = "utf-8") as f1:
            mp3_filenames = f1.readlines()
        numbers = 24
        count1 = 0
        count2 = 0
        day = "20190228"
        phone_frequency = np.zeros(numbers)
        for line in mp3_filenames:
            time_string = line.strip().split('_')[-2]
            time_string = int(time_string)
            count1 += 1
            for i in range(numbers):
                if time_string >= int(day+"000000") + 10000 *i and time_string < int(day+"010000") + 10000 * i:
                    phone_frequency[i] += 1
                    count2 += 1
                else:
                    pass
    
        #print("phone_frequency:",phone_frequency.astype(int))
        phone_frequency_map = {}
        phone_frequency_map["phone_frequency"] = phone_frequency.astype(int).tolist()
        print(phone_frequency_map)
        return phone_frequency_map
    
    if __name__ == '__main__':
        phone_frequency_map = phone_frequency_analysis()
        print(phone_frequency_map)
    

    3.对接口进行封装

    import os
    import tornado.ioloop
    import tornado.web
    import tornado.httpserver
    import logging
    from tornado.escape import json_decode, json_encode, utf8
    from phone_frequency_analysis import phone_frequency_analysis
    
    logger = logging.getLogger('mylogger')
    logger.setLevel(logging.DEBUG)
    
    fh = logging.handlers.RotatingFileHandler('python_getDemo.log', maxBytes = 1024*1024*1024, backupCount = 100)
    fh.setLevel(logging.DEBUG)
    
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    fh.setFormatter(formatter)
    
    logger.addHandler(fh)
    
    class ChangeModel(tornado.web.RequestHandler):
        def get(self):
            self.set_header("Access-Control-Allow-Origin", "*")
            self.set_header("Access-Control-Allow-Headers", "x-requested-with")
            self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
            phone_frequency = phone_frequency_analysis()
            result = {
                "phone_frequency": phone_frequency,         
                "code": 0
            }
            self.write(json_encode(result))
    
    def make_app():
        return tornado.web.Application([
            (r"/phoneFrequency", ChangeModel),
        ])
    
    if __name__ =="__main__":
        app = make_app()
        sockets = tornado.netutil.bind_sockets(10031)
        http_server = tornado.httpserver.HTTPServer(app)
        http_server.add_sockets(sockets)
        print("Server Start Ok.....")
        tornado.ioloop.IOLoop.instance().start()
    

    4.查看进程

    ps aux|grep phone_frequency_api.py
    

    返回
    在这里插入图片描述
    5.查看端口

    netstat -anp|grep 10031
    

    在这里插入图片描述
    6.测试
    不带输入参数

    curl http://47.105.196.123:10031/phoneFrequency
    

    如果带有输入参数

    curl http://47.92.225.212:10030/testPrint?query="早安我晚点要去进餐"&EnterpriseID=100000011
    

    返回
    在这里插入图片描述
    7.遇到的问题
    TypeError: array is not JSON serializable
    原因:返回的map里面有个值是numpy array类型
    解决方案:要用tolist()方法将array类型转化为list类型
    在这里插入图片描述
    https://stackoverflow.com/questions/26646362/numpy-array-is-not-json-serializable

    展开全文
  • python3封装Api接口

    千次阅读 2018-08-13 16:37:00
    python3封装Api接口 注:本篇的代码和语法基于Python3.5环境,下面将用到Python 的Flask框架 封装接口主要讲静态接口(无参数传入)、动态接口(有参数传入,不同参数返回的信息不同)。针对动态接口...

    注:本篇的代码和语法基于Python3.5环境,下面将用到Python 的Flask框架

    封装接口主要讲静态接口(无参数传入)、动态接口(有参数传入,不同参数返回的信息不同)。针对动态接口有三种传参方式:key_value、json串和拼接方式入参

     

      • 一、封装成无参数传入的接口
        from flask import Flask,jsonify,request
        data = {'huhy':{'age':24,'sex':'女'},
                'liuer':{'age':12,'sex':'男'}
                }
        app = Flask(__name__)#创建一个服务,赋值给APP
        @app.route('/get_user',methods=['post'])#指定接口访问的路径,支持什么请求方式get,post
        #讲的是封装成一种静态的接口,无任何参数传入
        def get_user():#-----这里的函数名称可以任意取
            return  jsonify(data)#把字典转成json串返回
        
        app.run(host='0.0.0.0',port=8802,debug=True)
        #这个host:windows就一个网卡,可以不写,而liux有多个网卡,写成0:0:0可以接受任意网卡信息,
         通过访问127.0.0.1:8802/get_user,可返回data信息
        #debug:调试的时候,可以指定debug=true;如果是提供接口给他人使用的时候,debug要去掉
        接口返回的截图如下:



      • 二、有参数传入的接口
         1.通过key_value方式传参
        from flask import Flask,jsonify,request
        data = {'huhy':{'age':24,'sex':'女'},
                'liuer':{'age':12,'sex':'男'}
                }
        err = {'zz':404,
               'yy':502
               }
        app = Flask(__name__)#创建一个服务,赋值给APP
        @app.route('/get_user',methods=['post'])#指定接口访问的路径,支持什么请求方式get,post
        
        # key_values方式传参
        def get_user():
            username = request.form.get('username')#获取接口请求中form-data的username参数传入的值
            if username in data:#判断请求传入的参数是否在字典里
                return jsonify(data[username])
        #如果在的话,则返回data对应key的值转成的json串信息
            else:
                return jsonify(err[username])
        #如果不在的话,返回err对应key的value转成的json串信息
        
        app.run(host='0.0.0.0',port=8802,debug=True)
        #这个host:windows就一个网卡,可以不写,而liux有多个网卡,写成0:0:0可以接受任意网卡信息
        #通过访问127.0.0.1:8802/get_user,form—data里输入username参数,则可看到返回信息
        

        接口返回的截图如下:



        2.通过json串方式传参
        from flask import Flask,jsonify,request
        data = {'huhy':{'age':24,'sex':'女'},
                'liuer':{'age':12,'sex':'男'}
                }
        err = {'zz':404,
               'yy':502
               }
        app = Flask(__name__)#创建一个服务,赋值给APP
        @app.route('/get_user',methods=['post'])#指定接口访问的路径,支持什么请求方式get,post
        
        #json方式传参
        def get_ss():
            username = request.json.get('username1')#获取带json串请求的username参数传入的值
            if username in data:  # 判断请求传入的参数是否在字典里
                return jsonify(data[username])
        #如果在的话,则返回data对应key的值转成的json串信息
            else:
                return jsonify(err[username])
        #如果不在的话,返回err对应key的value转成的json串信息
        app.run(host='0.0.0.0',port=8802,debug=True)
        #这个host:windows就一个网卡,可以不写,而liux有多个网卡,写成0:0:0可以接受任意网卡信息
        #通过访问127.0.0.1:8802/get_user,form—data里输入username参数,则可看到返回信息
        接口返回的截图如下:



        3.请求链接直接拼接入参方式
        from flask import Flask,jsonify,request
        data = {'huhy':{'age':24,'sex':'女'},
                'liuer':{'age':12,'sex':'男'}
                }
        err = {'zz':404,
               'yy':502
               }
        app = Flask(__name__)#创建一个服务,赋值给APP
        @app.route('/get_user',methods=['post'])#指定接口访问的路径,支持什么请求方式get,post
        
        #请求后直接拼接入参方式
        def get_ss():
            username = request.args.get('username')#使用request.args.get方式获取拼接的入参数据
            if username in data:  # 判断请求传入的参数是否在字典里
                return jsonify(data[username])
        	#如果在的话,则返回data对应key的值转成的json串信息
            else:
                return jsonify(err[username])
        	#如果不在的话,返回err对应key的value转成的json串信息
        app.run(host='0.0.0.0',port=8802,debug=True)
        #这个host:windows就一个网卡,可以不写,而liux有多个网卡,写成0:0:0可以接受任意网卡信息
        #通过访问127.0.0.1:8802/get_user,form—data里输入username参数,则可看到返回信息

        接口返回的截图,如下:




        4.request.values.get()获取请求参数的方法,不仅支持获取连接拼接的参数,而且还能获取body form填入的参数

      • 未完待续
    posted on 2018-08-13 16:37 秦瑞It行程实录 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/ruiy/p/9469129.html

    展开全文
  • 公司之前算法对外提供服务都是通过flask框架生成的api接口的形式,而最近项目中需要提高算法api接口的并发性能,通过分析flask对外api接口发现,该api接口是串行的方式,也即阻塞的形式进行数据处理的(前一条数据...

    公司之前算法对外提供服务都是通过flask框架生成的api接口的形式,而最近项目中需要提高算法api接口的并发性能,通过分析flask对外api接口发现,该api接口是串行的方式,也即阻塞的形式进行数据处理的(前一条数据处理完成,才会进入下一条数据的处理)。因此,将flask提供api接口改为gevent,改用gevent后,算法接口在并发性能上提升效果明显,下面简要记录一下,做个笔记。

    测试工具JMeter

    本文采用jmeter测试工具对算法接口性能进行测试。JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。

    JMeter的安装:https://blog.csdn.net/Jenny_He/article/details/88926605

    利用JMeter测试基于flask接口和基于gevent接口的性能时,其线程组的设置如下图所示,设置100个线程(模拟100次接口调用), 准备时长(Ramp-Up)设置为1秒。

    线程组各参数的含义可参考:https://blog.csdn.net/u012111923/article/details/80705141

    算法接口参数设置如下图所示 

    基于flask的api接口

    测试代码如下

    # -*- coding: utf-8 -*-
    # @Time        : 2019/4/2 10:16
    # @Author      : tianyunzqs
    # @Description :
    
    import os
    import sys
    import logging as logger
    import traceback
    
    from flask import Flask, request, json
    from flask_cors import CORS
    
    package_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(package_path)
    from dev_v6.xj_common import text_extract_api
    
    app = Flask(__name__)
    CORS(app)
    
    
    @app.route('/xj_hsyp_common', methods=['GET', 'POST'])
    def api_xj_common():
        try:
            data = request.form['data']
            if data:
                logger.info("输入:")
                logger.info(str(data))
                result = {"success": "true", "result": text_extract_api(text=data)}
            else:
                result = {"success": "false", "result": "输入错误。"}
            logger.info("输出: ")
            logger.info(str(result))
            return json.dumps(result, ensure_ascii=False)
        except:
            logger.error(traceback.format_exc())
            return json.dumps({"success": "false", "result": "程序异常"}, ensure_ascii=False)
    
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=3009, threaded=True)
    

     jmeter测试产生的结果分析如下图所示

    从上图可看出,基于flask的算法接口的吞吐量为1.3/sec,而且接口的处理方式阻塞型的 。

    基于gevent的api接口

    安装gevent

    gevent是python的第三方库,提供了比较完善的对协程的支持。它用到Greenlet提供的,封装了libevent事件循环的高层同步API。它让开发者在不改变编程习惯的同时,用同步的方式写异步I/O的代码。

    gevent的相关介绍:https://www.jianshu.com/p/861f29ac68e8

    Windows安装

    在线安装

    pip install gevent

    离线安装

    https://www.lfd.uci.edu/~gohlke/pythonlibs/下载以下whl文件,先安装gevent的几个依赖包(cffi、greenlet、pycparser),最后安装gevent,安装命令:

    pip install *.whl

    ​Linux安装

    在线安装

    pip install gevent

    离线安装

    下载依赖包greenlet:

    https://files.pythonhosted.org/packages/2e/65/27f35497cc0102a792390d056e793e064da95fc9eae45d75ae0ba49c0a0d/greenlet-0.4.15-cp35-cp35m-manylinux1_x86_64.whl

    下载完成后运行:

    pip install greenlet-0.4.15-cp35-cp35m-manylinux1_x86_64.whl

    下载gevent:

    https://files.pythonhosted.org/packages/95/d2/f2f454b00fde1608f6f4889c8cc3e12b5000f26cd5c3e11b5427c7781de9/gevent-1.4.0-cp35-cp35m-manylinux1_x86_64.whl

    下载完成后运行:

    pip install gevent-1.4.0-cp35-cp35m-manylinux1_x86_64.whl

     性能测试

    测试代码:

    # -*- coding: utf-8 -*-
    # @Time        : 2019/4/2 10:16
    # @Author      : tianyunzqs
    # @Description :
    
    import os
    import sys
    import logging as logger
    import traceback
    import configparser
    
    from gevent import monkey
    from gevent.pywsgi import WSGIServer
    monkey.patch_all()
    from flask import Flask, request, json
    from flask_cors import CORS
    
    package_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(package_path)
    from dev_v6.xj_common import text_extract_api
    
    app = Flask(__name__)
    CORS(app)
    
    
    @app.route('/xj_hsyp_common', methods=['GET', 'POST'])
    def api_xj_common():
        try:
            data = request.form['data']
            if data:
                logger.info("输入:")
                logger.info(str(data))
                result = {"success": "true", "result": text_extract_api(text=data)}
            else:
                result = {"success": "false", "result": "输入错误。"}
            logger.info("输出: ")
            logger.info(str(result))
            return json.dumps(result, ensure_ascii=False)
        except:
            logger.error(traceback.format_exc())
            return json.dumps({"success": "false", "result": "程序异常"}, ensure_ascii=False)
    
    
    if __name__ == '__main__':
        http_server = WSGIServer(('', 3009)), app)
        http_server.serve_forever()
    

     jmeter测试产生的结果分析如下图所示 

     

    从上图可看出,接口的吞吐量提升到了2.9/sec,而且接口的处理方式非阻塞型的。

    对比测试结果发现,使用gevent后接口的性能明显提升;而且接口由原来的串行方式变为并行方式,真正提高了接口的并发处理能力。

    展开全文
  • 本文使用python对Bmob REST API的基本增删改查接口进行封装,方便在小程序开发时批量插入原始数据。 常用操作函数封装 #!/usr/bin/python # coding:utf-8 # Bmob后端云基本REST API封装 import requests import json...
  • 上期技术期货交易apipython封装,实现接口调用。支持windows linux. 环境需求 VS2017 python 3.6+ 使用说明 运行 pyton generate\\run.py 生成所有文件 C++编译 Windows 环境要求 vs2017 设置项目为x64,否则会提示...
  • 感谢温狗的帮助,困扰很久的问题终于解决 掌握django基本语法即可 只需要在views.py下编辑 from django.shortcuts import render from django.... 下一步目标,调用这些api接口不要在本地调用,在自己的服务器上调用

    感谢温狗的帮助,困扰很久的问题终于解决

    掌握django基本语法即可
    只需要在views.py下编辑

    from django.shortcuts import render
    from django.http import HttpResponse
    from rest_framework.views import APIView
    from rest_framework.response import Response
    import word2vec
    import  json
    #输入a和b返回a+b
    class TestAPIView(APIView):
        def get(self, request):
            a=int(request.query_params['a'])
            b=int(request.query_params['b'])
            res = {"a":a,"b":b,"sum":a+b}
            return HttpResponse(json.dumps(res),content_type="application/json,charset=utf-8")
    #输入a和b返回a+b
    class TestAPIViewByPost(APIView):
        def post(self, request):
            req = json.loads(request.body.decode())
            a = req.get('a')
            b = req.get('b')
            res = {"a":a,"b":b,"sum":a+b}
            return HttpResponse(json.dumps(res),content_type="application/json,charset=utf-8")
    
    #word2vec的api调用,传入一个word返回一个向量
    class TestAPIView2(APIView):
        def get(self, request):
            a = str(request.query_params['a'])
            model = word2vec.load("/Users/jianghuiwen/Desktop/text8.txt")
    
    
            # result = {'a': a, 'b': b}
            # js = json.dumps(result)
            # return Response(js)
            b=model[a]
            return Response('{}'.format(b))
    
    
    
    
    
    
    

    再在urls.py下编写

    """djangoProject2 URL Configuration
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        https://docs.djangoproject.com/en/3.1/topics/http/urls/
    Examples:
    Function views
        1. Add an import:  from my_app import views
        2. Add a URL to urlpatterns:  path('', views.home, name='home')
    Class-based views
        1. Add an import:  from other_app.views import Home
        2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
    Including another URLconf
        1. Import the include() function: from django.urls import include, path
        2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
    """
    from django.urls import path
    from rest_framework.views import APIView
    
    from rest_framework.response import Response
    
    from app01.views import TestAPIView
    from app01.views import TestAPIView2
    from app01.views import TestAPIViewByPost
    urlpatterns = [
        # path('test/', TestAPIView.as_view()),
        path('word2vec/', TestAPIView2.as_view()),
        path('add/', TestAPIView.as_view()),
        path('posttest', TestAPIViewByPost.as_view())
    ]
    
    
    

    如此我们即可调用
    比如求和api调用http://127.0.0.1:8000/test/?a=3&b=5
    其中a和b是我们人为可输入的值返回a+b。a和b必须是两个整数,返回a+b的值
    在这里插入图片描述
    调用word2vec即http://127.0.0.1:8000/test/?a=hello传入一个字符串返回一个词向量。
    在这里插入图片描述
    下一步目标,调用这些api接口不要在本地调用,在自己的服务器上调用

    展开全文
  • DolphinDB使用案例12:Python API接口

    千次阅读 2019-11-01 10:39:56
    DolphinDB Python API实质是封装了DolphinDB的脚本语言1(也就是前面11次案例中使用到的语言)。Python代码被转换成DolphinDB脚本在DolphinDB服务器执行,执行结果保存到DolphinDB服务器或者序列化到Python客户端。 ...
  • Python Flask编写API接口

    千次阅读 2019-11-17 02:57:24
    最近在用Pyhon写测试工具平台,编写...在编写工具的过程中,无可避免的需要写一些后端接口供前端调用,以下为常见的几种获取接口入参的方法 from flask import Flask, request, jsonify app = Flask(__name__) ...
  • 简单的使用Python API封装器来使用matplotlib, plotly, bokeh等绘制图表
  • 中国股市A股股票行情实时数据最简封装API接口,包含日线,分时分钟线,全部格式成DataFrame格式数据,可用来研究,量化分析,证券股票程序化自动化交易系统 行情系统包括新浪腾讯双数据核心,自动故障切换,为量化研究者...
  • 使用flask封装,简单来讲就是将python文件引入flask。这样的结果就是在网页上输入一个url就能得到结果。下面就讲如何进行实现。 2. 任务1:求两数之和 2.1 代码讲解 新建一个server.py的文件,文件中代码如下所示: ...
  • 企业微信接口封装库 Github: https://github.com/mouday/work-weixin-api 目前实现了简单的发送消息功能,后序按照业务继续增加其他接口 install pip install work-weixin-api demo # -*- coding: utf-8 -*- from ...
  • #环境python3.6# 爬取APP 无忧借条# 通过用户账号密码爬取用户个人信息(我这账号密码已打码)爬虫部分代码# coding:utf8 import hashlib import time import urllib3 import json headers = {'Accept': ' */*', '...
  • C++封装python接口(libboost-python

    千次阅读 2016-07-13 17:34:56
    摘要在Python技术文档中可以找到关于Python与C++之间相互调用的部分。...于此同时,还提供了 Python/C API接口Python/C API Reference Manual。虽然对于简单的调用使用起来很方便,但对于复杂的结构、封装
  • Python调用华为云API接口发短信

    千次阅读 2019-07-24 15:57:55
    【摘要】 用Python调用华为云API接口实现发短信,当然能给调用发短信接口...功 能:对华为云常用API接口进行封装 版权信息: 华为技术有限公司,版权所有(C) 2018-2019 作 者:qshujun 修改记录:2018/02/28 v1.0 ...
  • python flask 封装属于自己的api

    千次阅读 2020-07-26 17:29:19
    python flask 封装属于自己的api0x01 demo0x02 测试0x03 解决 WARNING: This is a development server. Do not use it in a production deployment. falsk WSGI 0x01 demo from flask import Flask, jsonify, ...
  • corpwechat-bot是一个python封装的企业机器人&应用消息推送库,通过企业微信提供的api实现。 利用本库,你可以轻松地实现从服务器端发送一条文本、图片、视频、markdown等等消息到你的微信手机端,而不依赖于其他的...
  • 股票行情实时数据接口-A股,完全免费的沪深证券股票数据-中国股市,python最简封装API接口,包含日线,历史K线,分时线,分钟线,全部实时采集,系统包括新浪腾讯双数据核心采集获取,自动故障切换,STOCK数据格式成...
  • 一、用ladon框架封装Python为Webservice接口  功能实现的同时,希望将接口开放给别人,而封装python接口的一个再简单不过的框架Ladon,而且提供不同的协议,包括SOAP和Json等格式的接口。虽然很简单,但是官网...
  • 本文使用python对Bmob REST API的基本增删改查接口进行封装,方便在小程序开发时批量插入原始数据。
  • 初学Python之Flask开发API接口

    万次阅读 2017-06-27 21:35:10
    并使用Flask开发API接口对外提供数据访问。 1、查看 python 的版本 python -V Python 2.7.12 :: Anaconda 4.1.1 (64-bit) 2、安装驱动 MySQL-python,下载 python 的对应版本 https://pypi.python.org/pypi/MyS
  • Python中Flask-RESTful编写API接口---小白入门详解

    万次阅读 多人点赞 2018-09-03 14:05:00
    文章来源: http://www.pythondoc.com/Flask-RESTful/quickstart.html 看完如上有关Flask-RESTful模块的使用,感觉还有很多不清楚的地方,大致查询了一下,发现很多人...(1)API接口:hello world 案例 from ...
  • 1、Python 接口测试之Excel表格数据操作方法封装; 2、Python 接口测试之接口关键字封装; 3、Python 接口测试之获取接口数据封装 ;  既然我们接口测试用例写好了,测试数据也拿到了,那么就是模拟调用接口的方法...
  • 原创文章,转载请注明出处:用Python的交易员 (本篇教程包含的内容太多...为什么要封装API 直接原因就是C++的API没法直接在Python里用,不过这个回答有点太简单,这里我们稍微做一些拓展解释: C++ API中很
  • #火币最简行情功能函数 import json,requests,urllib3,datetime;...huobi_domain='api.huobi.de.com' #API地址 'api.huobi.pro' # #1d:1天 4h:4小时 60m: 60分钟 15m:15分钟 def get_price(code, end_date=No
  • 主要介绍了Python中Flask-RESTful编写API接口(小白入门),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • CTP Python API WIN32 上期技术 Python API
  • Elasticsearch for python API模块化封装 Elasticsearch for python API模块化封装 模块的具体功能 检测Elasticsearch节点是否畅通 查询Elasticsearch节点健康状态 查询包含的关键字的日志(展示前10...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,125
精华内容 19,650
关键字:

python封装api接口

python 订阅