App Engine에서 시간을 추적하는 해결책을 찾았습니다. 완전히 스레드 안전하지는 않습니다. 어떻게 생각하십니까?
module.py
# coding=utf-8
## \authors Cezary K. Wagner
from threading import Lock
__indent = 0
__patched = False
def logImports():
global __patched
if __patched == True:
return
import time
import logging
# import inspect
import __builtin__
original__import__ = __builtin__.__import__
def patched__import__(name, *args):
global __indent
lock = Lock()
lock.acquire()
spaces = ' ' * (__indent * 2)
# callerFrame = inspect.currentframe().f_back
# moduleName = callerFrame.f_globals['__name__']
# lineNumber = callerFrame.f_lineno
# logging.debug('%simport start %s %s:%s.' % (spaces, name, moduleName, lineNumber))
__indent += 1
start = time.clock()
try:
module = original__import__(name, *args)
delta = time.clock() - start
# import could fail
finally:
lock.release
__indent -= 1
if delta >= 1.0:
logging.debug('%simport end %s in %ss' % (spaces, name, delta))
return module
__builtin__.__import__ = patched__import__
__patched = True
usage.py
from module import logImports
logImports()
import math
문제는 그것이 원인이 될 수 부하와 대기 시간 ** 마감일은 60 시간 제한 때문에 ** 예외를 초과 - 당신이 경우 ** 말했듯 그것은 ** 빨리로드됩니다 - 문제는 로딩 대기 시간입니다. 많은 모듈을 사용하는 경우 각각의 모듈에서 게으른 캐싱 (필요하기 전에 데이터 준비)을 수행 할 수 있기 때문에 문제가 될 수 있습니다. – Chameleon
여전히 로컬에서 테스트 할 수 있으며 로컬에서 수행 할 향상도 서버에 영향을 미칩니다. –
시간은 돈이지만 결과는 프로덕션 서버와 다를 것입니다. – Chameleon