3

Python 2.7 AppEngine アプリケーションで remote_api スタブをセットアップして、localhost デバッガーと組み合わせてデータストア アクセスを使用しようとしています (実際のデータを使用してアプリをテストします)。さて、この AppEngine Remote API 記事のチュートリアルに従って、次のコードを思いつきました (アプリケーションの REST ハンドラーから):

from google.appengine.ext.remote_api import remote_api_stub
from model import MyExpandoObject

# This returns my credentials
def auth_func():
    return ("me@gmail.com", "mypassword")

# TODO This too
def get(w_self):
    # Connect remote api in identical way to example docs:
    remote_api_stub.ConfigureRemoteApi(None, '/_ah/remote_api', auth_func,'bsl-dm-hrd.appspot.com')

    # This calls the database (breakpoint here)
    t_entity = MyExpandoObject.get_by_key_name('akey')

コードを実行すると、スタブの構成がパスします。次に、データベースを呼び出すと、デバッガーで次のエラーが発生します。

    BadRequestError: アプリ s~myapp はアプリ dev~myapp のデータにアクセスできません

これは、修正する必要があるエラーだと思います。これが HRD アプリケーションであることを示す s~ は、アプリ ID の一部として適切に報告されることに注意してください。私も含めました

builtins:
    - remote_api: on

app.yaml のディレクティブ。

私の質問は、なぜこのエラーが発生するのですか? これは文字通り、remote_api の記事から抜粋したサンプル コードです。念のため、AppEngine SDK にバンドルされている remote_api_shell.py を介して remote_api 接続も試してみましたが、データストアに接続し、モデルをインポートし、データベース呼び出しを実行することができました。なぜこれが失敗するのか、私は困惑しています。

4

1 に答える 1

1

アプリ ID が一致していません。アプリ ID を設定していないようです。ConfigureRemoteApi の最初のパラメーターとして None を指定しています。必要なアプリ ID を設定するには、dev_server の --partition 引数を設定する必要があります。 ConfigureRemoteApi 呼び出しに appid を指定します

于 2012-09-18T23:05:59.853 に答える