2011-06-20 23 views
1

私はイントロスペクションとinspectモジュールを使用してすべてのモデルを探すデータシーダーモジュールを構築しています。 module.model_nameのような文字列で見つかったモデルのインデックスを作成します。異なるモジュールに同じ名前のモジュールがさらに存在する可能性があるからです。Google App Engine __main__モジュール

moduleが実際に正しいモジュール名であることがありますが、たぶん__main__である可能性があります。これは、特定のモジュールが、インスタンスの起動後に最初にURLを処理するために呼び出されたためです。とにかく私はこれを避けることができるでしょうか、おそらく特定のモジュールを常に__main__にすることによって強制されますか?

複数のインスタンスが同時に実行されている場合、この問題は悪化します。これは、それぞれが異なる__main__モジュールを持つインスタンス間で矛盾したデータを取得するためです。

おかげ

+0

"データシードア"とは何ですか? –

+0

データシーダーは、シードデータを提供するモジュールです。おそらく、それは最高の名前ではない、私は本当にinternetsでそれを見ていないが、ねえ、それは何ですか? – sttwister

+0

あなたはテストのようなサンプルデータを意味しますか?またはファジングですか? –

答えて

2

あなたapp.yamlの各scriptエントリは__main__モジュールとして実行されます。単一の場合は__main__を1つだけ入力し、すべてを単一のWSGIApplicationインスタンス経由でマップする必要があります。

+0

私が探していたものではありませんが、あなたが言ったことは正しいと思われます。私はあなたの答えを受け入れていますが、より良い方法を探しています。それらのうちのいくつかはサードパーティのライブラリなので、私は本当に単一の 'スクリプト 'を提供することはできません。 – sttwister

+0

@sttwister FWIWでは、一度に1つのモジュールだけが '__main__'と呼ばれます - この要求のために呼び出されたモジュールです。コードが常に同じモジュールによって呼び出される場合、そのコードが何であるかを知る必要があります。そうでない場合は、スタックを調べるなど、それが何であるか把握するために使用できるさまざまなハックがあります。 –