2012-04-06 59 views
7

如何輪廓谷歌應用程序引擎運行時間python27 Python代碼?如何分析谷歌應用程序引擎python27運行時(而不是Python)

在運行時蟒蛇它是由這個代碼實現 - python runtime

from google.appengine.ext import webapp 

class PageHandler(webapp.RequestHandler): 
    def get(self): 
    self.response.headers['Content-Type'] = 'text/plain' 
    self.response.out.write('Hello, WebApp World!') 

def real_main(): 
    application = webapp.WSGIApplication([('/', PageHandler)], debug=True) 
    run_wsgi_app(application) 

def profile_main(): 
    # This is the main function for profiling 
    # We've renamed our original main() above to real_main() 
    import cProfile, pstats, StringIO 
    prof = cProfile.Profile() 
    prof = prof.runctx('real_main()', globals(), locals()) 
    stream = StringIO.StringIO() 
    stats = pstats.Stats(prof, stream=stream) 
    stats.sort_stats('cumulative') 
    logging.info("Profile data:\n%s", stream.getvalue()) 

if __name__ == "__main__": 
    profile_main() 

在運行時python27是已經以不同的方式做,因爲沒有主電話 - 如何做同樣的事情 - 我想切換到python27,但不是沒有分析。如何連接探查器python27 - python27 runtime

import cProfile 
import cStringIO 
import logging 
import pstats 

def webapp_add_wsgi_middleware(app): 

    def profiling_wrapper(environ, start_response): 
    profile = cProfile.Profile() 
    response = profile.runcall(app, environ, start_response) 
    stream = cStringIO.StringIO() 
    stats = pstats.Stats(profile, stream=stream) 
    stats.sort_stats('cumulative').print_stats() 
    logging.info('Profile data:\n%s', stream.getvalue()) 
    return response 

    return profiling_wrapper 
+0

'你仍然可以在app.yaml.'如果指定的CGI腳本處理程序我理解正確,如果你不需要'併發請求',你仍舊可以使用舊的方法。 – Dikei 2012-04-06 11:44:12

+0

可能是因爲想要測試沒有CGI並且沒有編輯app.yaml每個測試(它很慢),app.yaml的使用可能不好, 。 – Chameleon 2012-04-10 23:00:58

回答

14

您可以在您的appengine_config.py將使用WSGI中間件簡介一個WSGI應用並在每個正在分析的頁面上很好地呈現結果。

它提供PERF信息(通過將Appstats)兩種API調用和標準的分析數據對所有的函數調用(通過cProfiler)

https://github.com/kamens/gae_mini_profiler

+0

看起來不錯我會盡快測試... – Chameleon 2012-04-10 22:58:01

+0

偉大的解決方案! – Chameleon 2012-04-18 07:52:44

6

你也可以滴在App Engine的迷你探查,這對於你藉此咒語的護理:

import webapp2 

class PageHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.out.write('Hello, WebApp World!') 

app = webapp2.WSGIApplication([('/', PageHandler)]) 
相關問題