You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

32 lines
847 B

import controllers # noqa
from cProfile import Profile
def patch_openerp():
"""Modify OpenERP/Odoo entry points so that profile can record.
Odoo is a multi-threaded program. Therefore, the :data:`profile` object
needs to be enabled/disabled each in each thread to capture all the
execution.
For instance, OpenERP 7 spawns a new thread for each request.
"""
from openerp.addons.web.http import JsonRequest
from .core import profiling
orig_dispatch = JsonRequest.dispatch
def dispatch(*args, **kwargs):
with profiling():
return orig_dispatch(*args, **kwargs)
JsonRequest.dispatch = dispatch
def create_profile():
"""Create the global, shared profile object."""
from . import core
core.profile = Profile()
def post_load():
create_profile()
patch_openerp()