0

いくつかの Python サービスがあり、app.yaml でそれらのハンドラーの場所を定義しました。

Java サービスもあり、web.xml を構成しました。

両方を同じAPP IDの下に配置したい、例えば

では、どうすればこれを達成できますか?

  • GAE Java Eclipse プラグインを使用すると、Java サービスのみがアップロードされ、既存の Python サービスが削除されます。
  • appcfg.py updateを使用すると、Python サービスのみがアップロードされ、既存の Java サービスが削除されます。
4

4 に答える 4

4

ハックがあります: 異なるバージョンへのアップロード

1 つのインスタンス バージョンを Java で使用し、もう 1 つのインスタンス バージョンを Python で使用できます。デフォルトのものは、 経由で公開されhttp://myapp.appspot.comます。

http://version.myapp.appspot.comたとえば、を介して(ブラウザまたはプログラムで)他のバージョンにアクセスできますhttp://3.myapp.appspot.com

同じ URL を介して両方にアクセスしたい場合は、リクエストをプロキシするか、リダイレクトを行う必要があります (クライアントが許可している場合)。

于 2012-01-19T08:46:59.977 に答える
1

1つのアプリで2つのランタイム環境を使用する公式の方法はありません。Jythonは、Javaランタイム環境でPythonコードを実行する1つの方法です。

必要に応じて、同じアプリIDで2つの異なるアプリバージョンを使用してみることができます。1つのバージョンはJavaランタイム環境を使用でき、もう1つのバージョンはPythonランタイム環境を使用できます。どちらのバージョンにも同じデータストアが表示されます。appspot.comのURLを使用して、各アプリのバージョンを個別にアドレス指定できますが、きれいではありません 。http: //version-id.latest.app-id.appspot.com 「デフォルト」バージョンにできるのは1つのバージョンのみです(http: //myapp.appspot.com)。これは、許可されている10個のバージョンのうち2個を使用するため、各バージョンを正しいバージョンIDでデプロイするように注意する必要があります。したがって、これは理想的なソリューションではありません。

于 2012-01-19T08:48:37.710 に答える
0

種類ごとにアプリ サーバー/VM が異なるため、同時に使用できるアプリは 1 つだけです。つまり、異なる部分をアップロードすることはできず、同じアプリで異なる URL に対して異なる SDK を持つことはできません。

ところで、 jythonを使用してみると、Java プロジェクトで Pythong コードを解釈できます。プロダクションの準備ができているかどうかはわかりませんが(数年前に試したときに多くの問題がありました)、状況に役立つかもしれません

于 2012-01-19T05:43:42.897 に答える
0

@splix が言ったように、言語が異なる 2 つのアプリを同じ appid にデプロイすることは不可能のようです。代わりに回避策はありますか?URLFetch 経由ですべてのリクエストを mypythonapp.appspot.com にリダイレクトする /pythonapp サーブレットを Java アプリに設定します。

私の頭に浮かぶこの回避策の欠点は、ユーザー API によって提供されるログイン ユーザーに関する情報が失われることです。そのため、リダイレクトされた要求に情報を添付する必要があります。アプリのシナリオによっては、これがショー ストッパーになるかどうかはわかりません。

編集: 私が念頭に置いていたのは、完全に異なるアプリとしてデプロイするのではなく、異なるバージョンを使用して、Peter が提案したことです。それらを混同して申し訳ありません。別のアプリへのデプロイは、Python アプリと Java アプリが共有データストアを使用できないことを意味します。

私の答えの違いは、URLFetches を使用して、アプリの異なるバージョン間でリクエストを転送できることです。しかし、私の答えのようにサーバー側でリダイレクトを実行するのではなく、Peter の提案に従ってクライアント側でリダイレクトを実行することは、おそらくあまりハックではないでしょう。

于 2012-01-19T06:48:21.977 に答える