最近在grahite上看到响应时间变得很长,虽说之前没有特意去优化性能,但是感觉也不应该这么差才对。
我们的服务器框架用的就是我之前开源的 maple,每个命令字都对应一个入口函数,如下:
@app.route(2) def login(request): logger.error("login: %s", request.gw_box) uid = request.box.get_json()["uid"] request.login_client(uid) time.sleep(1) request.write_to_client(dict( ret=0, body="login %s" % uid ))
所以只要找到一种方法分析这个函数对应的内部调用情况就可以了。
很方便的,python内置了cProfile类来完成我们想要的功能,我给封装成为一个装饰器,用起来更方便一些,当然在django和flask中也可以直接用。
def monitor_profile(func): import cProfile import functools @functools.wraps(func ...