GAE: службы Python и Java вместе под одним и тем же идентификатором приложения - PullRequest
0 голосов
/ 19 января 2012

У меня есть некоторые службы Python, и я определил их расположение в app.yaml

У меня также есть службы Java и я настроил web.xml.

Я хочу, чтобы онинаходиться под тем же идентификатором приложения, например,

Итак, как мне это сделать?

  • Когда я использую GAE плагин Java Eclipse , он только загружает Java-сервис и удаляет существующий Python-сервис.
  • Когда я использую appcfg.py update , он только загружает службу Python и удаляет существующую службу Java.

Ответы [ 4 ]

4 голосов
/ 19 января 2012

Есть взлом: загрузка в разные версии

Вы можете иметь одну версию экземпляра на Java, а другую на Python. По умолчанию будет виден для общественности через http://myapp.appspot.com.

Вы можете получить доступ к другой версии (в браузере или программно) через http://version.myapp.appspot.com, например, http://3.myapp.appspot.com

Если вы хотите получить доступ к ним обоим через один и тот же URL-адрес, вам потребуется прокси-запрос или выполнить перенаправление (если ваш клиент это разрешает).

1 голос
/ 19 января 2012

Официального способа использования двух сред выполнения с одним приложением не существует. Jython - это один из способов запуска кода Python в среде выполнения Java.

В зависимости от ваших потребностей, вы можете попробовать использовать две разные версии приложения с одинаковым идентификатором приложения. Одна версия может использовать среду выполнения Java, а другая - среду выполнения Python. Обе версии увидят одно и то же хранилище данных. Вы можете адресовать каждую версию приложения отдельно, используя URL-адреса appspot.com, хотя они не очень приятные: http://version -id.latest.app-id.appspot.com «По умолчанию» может быть только одна версия версия (http://myapp.appspot.com).) Используются 2 из 10 разрешенных версий, и вам нужно быть осторожным при развертывании каждой версии с правильными идентификаторами версий. Так что это не идеальное решение.

0 голосов
/ 19 января 2012

Как сказал @splix, развертывание двух приложений с разными языками в одном приложении кажется невозможным. Так как насчет обходного пути вместо этого? Установите сервлет / pythonapp в вашем приложении Java, которое будет перенаправлять все запросы на mypythonapp.appspot.com через URLFetch.

Недостаток этого обходного пути, который мне приходит в голову, заключается в том, что вы теряете информацию о вошедшем в систему пользователе, предоставленную пользовательским API, поэтому вам необходимо будет прикрепить информацию к перенаправленному запросу. В зависимости от сценария вашего приложения, я не знаю, будет ли это остановка шоу или нет.

РЕДАКТИРОВАТЬ: Я имел в виду, что Питер предложил использовать разные версии, а не развертывать их как совершенно другое приложение, извините, что я перепутал их. Развертывание в другом приложении означало бы, что ваше приложение Python и приложение Java не могут использовать общее хранилище данных.

Разница в моем ответе заключается в том, что вы можете использовать URLFetches для пересылки запросов между различными версиями вашего приложения. Но выполнение перенаправления на стороне клиента согласно совету Питера, а не на стороне сервера, как в моем ответе, вероятно, было бы менее хакерским.

0 голосов
/ 19 января 2012

Я уверен, что вы можете иметь только одно приложение одновременно, потому что это разные серверы приложений / виртуальные машины для каждого типа. Я имею в виду, что вы не можете загружать разные части, не можете иметь разные SDK для разных URL в одном приложении и т. Д.

Кстати, вы можете попробовать использовать jython , это может интерпретировать ваш код Pythong в проекте Java. Я не уверен, что он готов к производству (с ним было много проблем, когда я попробовал его несколько лет назад), но, возможно, это поможет вам в вашей ситуации

...