Лучшие способы обработки запросов AppEngine на этот тайм-аут? - PullRequest
1 голос
/ 06 ноября 2010

Иногда при больших запросах Google AppEngine возвращает ошибку.Я обработал это с помощью некоторой хитрости: Memcaching промежуточных обработанных данных и просто запросил страницу снова.Это часто работает, потому что данные memcached не нужно пересчитывать, а запрос завершается вовремя.

Однако ... этот взлом требует увидеть ошибку, вернуться назад и щелкнуть снова.Очевидно, что меньше, чем идеал.

Есть предложения?

inb4: «оптимизировать свой процесс», «разбить страницу на подпроцессы» и «использовать задачу».

Спасибо за любые мысли.

Редактировать - Чтобы уточнить: долгое ожидание запросов в порядке, потому что функция административная.Я в основном хочу запустить функцию интеллектуального анализа данных.Я ищу в хранилище данных и модифицирую кучу объектов.Я думаю, что правильный ответ заключается в том, что AppEngine не может быть правильным инструментом для этого.Я должен экспортировать данные на компьютер, где я могу самостоятельно запускать подобные функции.Похоже, AppEngine действительно предназначен для обслуживания с более низкими требованиями к обработке.Возможно, модель квот / цен должна предлагать возможность увеличить время ожидания обработки и взимать дополнительную плату.

Ответы [ 2 ]

1 голос
/ 07 ноября 2010

Если интерактивные запросы пользователей выходят за 30-секундный срок, у вас есть большие проблемы: ваш пользователь почти наверняка сдался и все равно ушел.

Что вы можете сделать, зависит от того, что делает ваш код.Можно многое оптимизировать путем пакетирования операций с хранилищами данных или сокращения их за счет изменения способа моделирования данных;вы можете перенести работу в очередь задач;для URLFetches вы можете выполнять их параллельно.Расскажите нам больше о том, что вы делаете, и мы сможем предоставить более конкретные предложения.

1 голос
/ 06 ноября 2010

Я обрабатывал нечто похожее, создавая собственный автоматический диспетчер повторных попыток на клиенте. Каждый раз, когда происходит сбой вызова Ajax на сервер, клиент повторяет его.

Это очень хорошо работает, если ваша страница ajaxy. Если ваше приложение разбрасывает целые HTML-страницы, вы можете использовать двухпроходный процесс: сначала отправьте пустую страницу, содержащую только запрос ajax. Затем, когда AppEngine получает этот ajax-запрос, он выводит тот же HTML, что и раньше. Если вызов ajax успешен, он заполняет DOM результатом. Если это не удается, он повторяет попытку один раз.

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