2016-05-20 4 views
0

У меня есть приложение App Engine, которое имеет несколько независимых модулей.Как получить url для модулей sibling в движке приложения

Когда deployed эти модули становятся доступными в http://<module>.<app_id>.appspot.com, и при тестировании на местном уровне с dev_appserver.py mod1.yaml mod2.yaml --port-9000, то mod1 бежит в http://localhost:9000 и mod2 работает в http://localhost:9001. Все модули работают в одном проекте. Все идет нормально.

Предположим, что mod1 необходимо говорить на mod2. Есть ли способ получить URL-адрес для mod2 в пределах mod1, динамически?

# In mod1's code 
import google.some.magic 
url_for_mod2 = magic.get_url_for_module('mod2') # http://localhost:9001 or http://mod2.id.appspot.com 

ответ

1

Возможно создание кросс-модульных URL-адресов, которые работают как с GAE, так и с сервером разработки с использованием API modules.get_hostname(). Вы можете найти пример в этом ответе: https://stackoverflow.com/a/31145647/4495081

0

До тех пор, как я знаю, это невозможно. Поскольку у вас есть 2 службы и, возможно, больше в будущем, кажется, вы используете распределенную архитектуру микросервисов, и поэтому вам необходимо зарегистрировать свои службы, чтобы они знали, где находится другая служба. Для этого я рекомендую etcd, он действительно очень прост в использовании. Хороший парень также написал python-client для этого!

 Смежные вопросы

  • Нет связанных вопросов^_^