Использование памяти в Google App Engine - PullRequest
1 голос
/ 31 января 2010

Я немного смущен. Я написал отдельное приложение на Java и теперь хочу использовать GAE для разверните его в Интернете и по дороге, чтобы узнать о GAE. В моем приложении я читаю данные из файла, сохраняю их в памяти, обрабатываю и сохраняю результаты в памяти или файле. Я понимаю, что теперь мне нужно сохранить результаты в хранилище данных GAE, что нормально. Таким образом, я могу запустить свою программу независимо на моем компьютере, затем записать результаты в файл и затем использовать GAE, чтобы загрузить все результаты в хранилище данных, а затем пользователи могут запросить его. Тем не менее, есть ли способ, которым я могу перенести весь процесс в приложение GAE? поэтому приложение считывает данные из файла, выполняет обработку (использует память на сервере приложений, а не мой компьютер - требуется как минимум 4 ГБ ОЗУ), а затем, когда это делается (может занять 1-2 часа), записывает все в GAE хранилище данных? (так что это внутренний "автономный" процесс, в который не вовлечены пользователи).

Я немного сбит с толку, поскольку Google ничего не упоминает о квоте памяти.

Спасибо!

1 Ответ

8 голосов
/ 31 января 2010

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

Несмотря на это, вы можете разбить свои вычислительные задачи на 30-секундные порции и сохранить промежуточные результаты в хранилище данных или в кэше памяти. В этом случае вы можете использовать задание cron или очередь задач (обе описанные в документации механизма приложений), чтобы продолжать вызывать обработчики обработки до тех пор, пока не будет завершен перебор данных.

В целом, да, возможно, можно делать то, что вы хотите, но это может не стоить хлопот. Посмотрите на другие облачные решения, такие как Amazon EC2 или Hadoop, если вы хотите выполнять вычислительно сложные задачи.

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