Google App Engine: задачи против потоков? - PullRequest
2 голосов
/ 04 августа 2010

У меня есть местное научное приложение, которое использует потоки для обработки независимых частей больших вычислений. Моя группа хотела бы, чтобы это стало веб-приложением, так что теперь я выясняю, как его портировать (поэтому, пожалуйста, прости любые полные утверждения о тупице). Я использую Google App Engine, чтобы позаботиться о «веб» части, но я все еще выясняю, какие другие переводы уместны.

Мое первое желание состояло в том, чтобы полностью оставить вычисления как есть (например, перевести некоторые данные веб-формы в соответствующий формат, передать их в калькулятор, который порождает потоки и т. Д.).

Однако я также читаю о Queue s + TaskOptions - это похоже на то, что я должен использовать вместо ExecutorService + Callable. Отдельные подсчеты могут занять немного времени (хотя они также могут сильно различаться по количеству времени), поэтому я думаю, что в идеале я бы хотел, чтобы пользователь запросил весь расчёт, а затем перешел на страницу, которая загружает результаты по мере их поступления.

Правильно ли использовать Queue s + TaskOptions? Если нет, то что? Если да, то есть ли удобные параллельные примеры того, что я собираюсь сделать?

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

Со временем (после некоторых публикаций и т. Д.) Мы планируем сделать эти внутренние ресурсы открытыми, и, по-видимому, тогда веб-версия может переместить вычисления на стороне клиента. Есть ли предпочтительный способ сделать реализацию сейчас, которая сделает этот будущий перевод более простым? Или об этом даже не стоит беспокоиться (поскольку у меня уже есть «клиентская» версия в моем локальном приложении)?

Ответы [ 2 ]

3 голосов
/ 04 августа 2010
  1. Все запросы (включая задачи) в ядре приложения имеют ограничение по времени 30 секунд. Если ваши вычисления займут больше времени, вам нужно будет найти способ разбить их на более мелкие куски. Сильная сторона движка приложений - это веб-приложения, а не сокращение числа.

  2. Если вы хотите иметь возможность обмениваться кодом между клиентом и сервером, один из вариантов - заглянуть в GWT. (Google Web Toolkit) Это позволит вам написать клиент с использованием исходного кода Java, который затем преобразуется в JavaScript. Это был бы один из способов повторного использования кода обработки чисел, который у вас уже есть.

2 голосов
/ 04 августа 2010

Вы не можете создавать темы в App Engine. Очереди задач + Варианты задач будет путь.

Если вы хотите сохранить что-то внутреннее - тогда сохранение этого на стороне сервера было бы самым безопасным делом сейчас. Однако вы можете представить ваш рабочий процесс как услугу, чтобы в будущем клиенты могли общаться с одной и той же службой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...