3

アプリを移行しようとしていますが、 app.yaml をthreadsafe: falseからthreadsafe: trueに変更するまで、すべてが正常に機能していました。

私が受け取っていたエラーは次のとおりです。

CGI ハンドラでスレッドセーフを有効にすることはできません: a/b/

xyz.app

最上位ディレクトリのスクリプトのみがハンドラーとして機能するため、サブディレクトリにスクリプトがある場合は移動する必要があり、それに応じてスクリプト参照が変更されます:

- url: /whatever
# これは機能しません ...
# script: lib/some_library/handler.app
# ... これは機能し
ます script: handler.app

プロジェクトの階層を変更したくないので、これに対する回避策はありますか(上記の調査が有効な場合)。

4

2 に答える 2

4

有効なPythonインポートパスである限り、ハンドラーはどこにでも置くことができます。

私のapp.yamlは次のようなエントリでいっぱいです

- url: /_ah/queue/deferred
  script: google.appengine.ext.deferred.application
  login: admin

フォルダーをモジュールとして機能させるには、フォルダーが必要__init__.pyですが、通常は、フォルダーを次のように置き換えることができます/.

または、ダニエルが提案するように実行します。おそらく、sys.path最初にlibdirを含めてから、ハンドラーをインポートするためにマングルする必要があることに注意してください。

于 2012-06-06T10:23:17.147 に答える
2

最上位ディレクトリにメイン ファイルを置き、そこにすべてのハンドラーをインポートしてから、そのファイルを介してそれらを参照します。

于 2012-06-06T08:29:34.037 に答える