Google App Engine :Серверные и внешние экземпляры

GAE допускает различные ограничения в зависимости от того, выполняется ли код во внешнем или внутреннем экземпляре. Например, он позволяет запускать длинные -запущенные фоновые потоки на серверной части, в то время как это приведет к тайм-ауту и ​​вызову исключение времени выполнения, если код выполняется на экземпляре внешнего интерфейса.

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

Мое понимание того, как работает GAE, заключается в том, что вы загружаете свое приложение (в файл WAR )и что оно масштабируется (создает кластеризованные экземпляры )этого приложения по мере необходимости или до тех пор, пока оно не превысит потолок, который вы определяете (для бюджетирования и т. д. ).

Но если я не ошибаюсь, это не позволяет вам загружать разные модули (несколько WAR )для одного и того же приложения и, таким образом, иметь 1 WAR для запуска на внешнем экземпляре и еще один WAR для запуска на бэкэнде. instance (, чтобы гарантировать, что вы запускаете фоновые потоки только на бэкэндах! ).

Итак, мой вопрос: :как вы разрабатываете, упаковываете и развертываете приложения GAE, чтобы правильный код всегда выполнялся в нужном экземпляре? Попутным с этим является вопрос о том, как указать, что различные длительные -запущенные задания должны выполняться на определенных бэкендах.Например, если у вас есть фоновый поток, который должен запускаться каждую ночь в полночь, но у вас есть 10 бэкендов, не означает ли это, что один и тот же фоновый поток будет запускаться во всех десяти экземплярах каждую ночь? Очевидно, что бывают ситуации, когда вы хотите, чтобы задание запускал только один бэкэнд, а в других случаях каждый бэкенд должен вести себя одинаково.

Опять все возвращается к:как убедиться, что правильный код развертывается и выполняется в правильном экземпляре? Заранее спасибо!

14
задан IAmYourFaja 9 August 2012 в 15:44
поделиться