Тайм-аут обхода в движке приложения - PullRequest
2 голосов
/ 29 сентября 2010

Я создаю демо для банковского приложения в App Engine. У меня есть таблица пользователей и таблица запасов.

Для того, чтобы я мог перечислить «Самые высокие доходы» в приложении, я сохраняю поле «Общая сумма» в каждой записи пользователя, чтобы позже я смог выбрать его с помощью ORDER BY.

Я запускаю задание cron, которое выполняется над таблицей Stocks и обновляю «Total Amount» каждого пользователя в таблице User. Проблема в том, что я часто получаю ТАЙМ-ауты, так как таблица акций довольно большая.

Есть ли способ преодоления ограничения по времени в App Engine, или есть ли обходной путь для такого рода обновлений (где вы ДОЛЖНЫ выбрать много записей в таблице, которые приводят к тайм-ауту)?

Joel

Ответы [ 2 ]

3 голосов
/ 29 сентября 2010

У вас есть несколько вариантов, все будут включать некоторую форму фоновой обработки.

Одним из вариантов будет использование задания cron для запуска задачи, которая запускает столько задач, сколько необходимо для суммирования ваших данных.Другой вариант - использовать один из паттернов Бретта Слаткина и обновлять данные практически в реальном времени.За подробностями обращайтесь к его высокопроизводительному докладу о конвейерах данных.

http://code.google.com/events/io/2010/sessions/high-throughput-data-pipelines-appengine.html

Вы также можете проверить API-интерфейс mapper (сокращение ядра приложения) и посмотреть, сможет ли он сделать то, что вам нужно.

http://code.google.com/p/appengine-mapreduce/

3 голосов
/ 29 сентября 2010

Обычным способом является разделение задания на более мелкие задания с использованием очереди заданий.

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