Я пытаюсь построить и отладить свое первое приложение GAE, и уже получил пользу от потрясающей поддержки Stackoverflowers, позволяющей мне добиться того, чтобы задачи обрабатывались в очереди по умолчанию.Спасибо!
Однако я хотел использовать Очереди, чтобы продемонстрировать, как вы будете выполнять «длинную» работу в фоновом режиме.Моя идея была:
- Получить запрос на обработку большого файла.
- Сохраните файл и поставьте задачу в очередь.
- Верните ответ.
- Обработайте файл в фоновом режиме.
- Сообщите клиенту черезКанал, что работа сделана!
У меня все это работает, но для одной проблемы.На моем сервере разработки очередь задач, кажется, не обрабатывает задачи в фоновом режиме.Чтобы имитировать длительную работу, я просто заснул там.
def post(self):
time.sleep(60)
#use a channel to let the client know we're done
Похоже, что сервер разработки GAE является однопоточным.Он не отвечает вообще, пока элемент не будет обработан из очереди?Это предположение верно?Есть идеи?
Спасибо
Добавление примеров кода:
#code to enqueue task
taskqueue.add(url='/processSubmission', params={'key': activity.key() }, transactional=False)
#class that processes queued work
class ProcessSubmission(webapp.RequestHandler):
def post (self):
time.sleep(60)
activity = db.get(db.Key(encoded=self.request.get('key')))
activity.approved = True
activity.put()
channel.send_message(activity.userid, 'Wahoo! we are done')