所以我想在将代码部署到appengine之前去掉它们。 我现在正在做的是一个简单的检查:
settings.py:
DEBUG = os.environ['HTTP_HOST'] == 'localhost'
from settings import DEBUG
if DEBUG:
#ensure I haven't screwed smth up during refactoring
但是这次检查会在每次通话期间消耗CPU周期,对吗? 在Java中,有一种模式可以在编译时剥离调试代码:
public static final boolean DEBUG = true; // change to false before going production
if(DEBUG){
//debug logging
}
是否有一种干净的方法可以在Python中实现相同的效果,或者我应该使用像#%STRIP_ME%
这样的smth包装代码然后针对它运行自定义脚本?
答案 0 :(得分:3)
答案 1 :(得分:2)
如果您担心代码并且能够执行此操作,则可以使用装饰器方法来注入调试,然后对于生产代码,将装饰器函数重新定义为无操作。
老实说,我不会担心它,因为if语句应该对应于汇编中的跳转语句,或者可能比这更多。
答案 2 :(得分:2)
首先,我建议您检查“os.environ ['SERVER_SOFTWARE']。startswith('Dev')”。即使您访问另一台主机上的开发服务器,这也会有效。
此外,只有在每个App服务器实例上第一次导入配置模块时,才会评估您的'DEBUG'语句。这很好,因为调试状态不会从请求变为请求,并且还节省了一些CPU周期。我不担心你以后是否处于调试模式时检查的CPU周期检查 - 有很多,更低的结果,我怀疑你甚至可以测量的性能下降简单的if语句。
答案 3 :(得分:1)
您最有可能从使用logging module和重要性级别中受益。
在发布之前不需要删除代码,如果您需要在生产中进行调试,则可以精确配置重要性级别,并且可以轻松搜索代码以获取通知的来源。