pyramid_cubicweb/profile.py
changeset 11535 dd875009cc47
child 11537 caf268942436
equal deleted inserted replaced
11534:ceb1a5baca4f 11535:dd875009cc47
       
     1 import cProfile
       
     2 import itertools
       
     3 from pyramid.view import view_config
       
     4 
       
     5 
       
     6 @view_config(route_name='profile_ping')
       
     7 def ping(request):
       
     8     request.response.text = u'pong'
       
     9     return request.response
       
    10 
       
    11 
       
    12 @view_config(route_name='profile_cnx')
       
    13 def cnx(request):
       
    14     request.cw_cnx
       
    15     request.response.text = u'pong'
       
    16     return request.response
       
    17 
       
    18 
       
    19 def wsgi_profile(app, filename='program.prof', dump_every=50):
       
    20     profile = cProfile.Profile()
       
    21 
       
    22     counter = itertools.count(1)
       
    23 
       
    24     def application(environ, start_response):
       
    25         profile.enable()
       
    26         try:
       
    27             return app(environ, start_response)
       
    28         finally:
       
    29             profile.disable()
       
    30             if not counter.next() % dump_every:
       
    31                 print "Dump profile stats to %s" % filename
       
    32                 profile.create_stats()
       
    33                 profile.dump_stats(filename)
       
    34 
       
    35     return application