Как локально протестировать настройку нескольких доменов в AppEngine? - PullRequest
2 голосов
/ 26 марта 2011

В вопросе Работа с поддоменом в google app engine , был предложен следующий код.

applications = {
  'product.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', ProductHandler)]),
  'user.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', UserHandler)]),
}

def main():
  run_wsgi_app(applications[os.environ['HTTP_HOST']])

if __name__ == '__main__':
  main()

Мой вопрос: как мне проверить это локально?Когда я тестирую его локально, хост - это localhost: 8080, а не какой-либо из доменов.

1 Ответ

2 голосов
/ 26 марта 2011

Создайте две новые записи в вашем файле Hosts :

127.0.0.1       product.example.com
127.0.0.1       user.example.com

и запустите локальное приложение GAE на Http-порту по умолчанию 80.

Если по какой-то причине, вы не можете запустить GAE на порту 80, вы можете попытаться изменить ваш application.py, чтобы он соответствовал номеру локального порта, примерно так:

if os.environ['SERVER_SOFTWARE'].startswith('Dev'):
    PORT=':8080'
else:
    PORT=''

applications = {
  'product.example.com%s' % PORT: webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', ProductHandler)]),
  'user.example.com%s' % PORT: webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', UserHandler)]),
}

Или даже лучше изменить основную функцию следующим образом (Благодаря комментарию @ Ника):

def main():
  run_wsgi_app(applications[os.environ['HTTP_HOST'].split(':')[0]])

Вы должны быть готовы протестировать локальное приложение по следующим адресам:
http://product.example.com:8080
http://user.example.com:8080

Не забудьтепереключите обратно свой файл Hosts, чтобы иметь доступ к производственному серверу.

...