Потоки Python (или их эквиваленты) на обходном пути в Google Application Engine? - PullRequest
2 голосов
/ 12 октября 2010

Я хочу создать приложение Google App Engine, которое выполняет следующие действия:

  1. Клиент делает асинхронный HTTP-запрос
  2. Сервер начинает обрабатывать этот запрос
  3. Клиентделает ajax http запросы для получения прогресса

Проблема в том, что обработка сервера (шаг # 2) может занять более 30 секунд.

Я знаю, что у вас не может быть потоковна Google Application Engine и что все задачи должны быть выполнены в течение 30 секунд, или они будут закрыты.Есть ли способ обойти это?

Также я использую python-django в качестве бэкэнда.

1 Ответ

4 голосов
/ 12 октября 2010

Вы захотите использовать API-интерфейс Task Queue , возможно, через отложенные задачи .API deferred значительно упрощает работу с очередями задач.

По сути, вам нужно запустить задачу, чтобы начать обработку.Эта задача должна перехватить DeadlineExceeded исключений и перепланировать себя (снова через deferred API) для продолжения обработки.Для этого необходимо, чтобы ваши задачи могли отслеживать собственный прогресс.Они также могут обновлять свой собственный статус в memcache, который вы можете использовать для написания представления, которое проверяет состояние задачи.Это представление затем может быть опрошено через Ajax.

...