Как мы можем профилировать память, загрузку процессора для API фляги во время выполнения? - PullRequest
0 голосов
/ 04 июля 2018

Я использую python 3 для своего приложения фляги, которое работает в порту 5000. У него есть один пример API. Мне нужно профилировать память, использование процессора при попадании этого API из REST или браузера.

Пожалуйста, помогите мне для лучшего решения.

import logging
from flask import Flask, jsonify
from flask_cors import CORS

logger = logging.getLogger()
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - "
                          "%(name)s:%(lineno)d [-] %(funcName)s- %(message)s")
logger.setLevel(logging.INFO)


app = Flask(__name__)
app.url_map.strict_slashes = False
CORS(app)


def health_check():
   return jsonify({"message": "success"})


app.add_url_rule(rule='/health', endpoint='health-check', 
    view_func=health_check, methods=['GET'])

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)

1 Ответ

0 голосов
/ 04 июля 2018

Как насчет (см .: https://pypi.org/project/memory_profiler/):

import logging
from flask import Flask, jsonify
from flask_cors import CORS
import memory_profiler as mp   # <----

logger = logging.getLogger()
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - "
                      "%(name)s:%(lineno)d [-] %(funcName)s- %(message)s")
logger.setLevel(logging.INFO)


app = Flask(__name__)
app.url_map.strict_slashes = False
CORS(app)


@mp.profile
def health_check():
   return jsonify({"message": "success"})


app.add_url_rule(rule='/health', endpoint='health-check', 
    view_func=health_check, methods=['GET'])

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=500)

Дает:

 * Running on http://0.0.0.0:5001/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: 187-502-207
Filename: mp.py

Line #    Mem usage    Increment   Line Contents
================================================
    17     40.0 MiB     40.0 MiB   @mp.profile
    18                             def health_check():
    19     40.0 MiB      0.0 MiB      return jsonify({"message": "success"})


127.0.0.1 - - [04/Jul/2018 11:01:15] "GET /health HTTP/1.1" 200 -
...