2

Я хочу сделать приложение Google App Engine, который делает следующее:Python Threads (или их эквивалент) в решении Google Application Engine?

  1. Клиент делает запрос на асинхронный HTTP
  2. сервер начинает обработку, запрашивающих
  3. Клиент делает запросы Ajax HTTP, чтобы получить Прогресс

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

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

Кроме того, я использую python-django в качестве бэкэнд.

ответ

4

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

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