2009-06-08 7 views
2

モジュールのスループットに使用できる変数を定義して、デバッグ出力を本番から分離する必要があります。環境では定義できません。モジュール内でクラス間で再利用されるグローバルの提案はありますか? さらに、このコードを使用しないようにappengineに通知するために、この変数フラグを設定する方法があります。Pythonのデバッグ変数

答えて

12

Google App Engineで完全にサポートされているlogging moduleをご覧ください。デバッグ、警告、エラーなどのログレベルを指定することができます。これらは、devサーバーコンソールに表示され、要求ログにも格納されます。

あなたはdevのサーバーを実行しているだけで、特定のコードを実行後にしている場合は、この操作を行うことができます。

if os.environ['SERVER_SOFTWARE'].startswith('Development'): 
    print 'Hello world!' 

SERVER_SOFTWARE変数は常にGoogle App Engineので設定されています。

モジュール固有の変数については、モジュールはオブジェクトであり、ちょうど他のオブジェクトと値を持つことができます。

my_module.debug = True 
+0

+1これは本当に@ dhavalの実際の問題に対する最良の答えです。 –

+0

thx Blixit、私はserver_software変数を知らない – dhaval

+0

@dhaval:環境変数はすべてのOSで利用できますので、この手法はどこでも動作します。もしあなたがGAEに参加していなければ、環境変数を自分で設定してください。 –

1

すべてのモジュールレベルの変数は、モジュール内のすべてのクラスに対してグローバルです。シングル、モジュールレベルDEBUG変数は、これら2つのクラスのすべてのインスタンスによって発見されるmymodule.py

import this 
import that 

DEBUG = True 

class Foo(object): 
    def __init__(self): 
     if DEBUG: print self.__class__, "__init__" 
     # etc. 

class Bar(object): 
    def do_work(self): 
     if DEBUG: print self.__class__, "do_work" 
     # etc. 

は、ここに私のファイルです。他のモジュール(例えば、this.pyおよびthat.py)は、独自の変数を持つことができます。これらはthis.DEBUGまたはthat.DEBUGであり、無関係です。

+0

thx @Lott、私は__mainで変数を定義していて失敗していました – dhaval

関連する問題