Я пытаюсь создать и отладить мое первое приложение GAE и уже выиграл от огромной поддержки Stackoverflowers, чтобы получить, где у меня есть задачи, обрабатываемые в очереди по умолчанию , Благодаря!Каналы и TaskQueues в Google App Engine (отладка клиента)
Однако я хотел использовать Очереди, чтобы продемонстрировать, как вы будете делать «длинную» работу в фоновом режиме. Моя идея:
- Получить запрос на обработку большого файла.
- Сохраните файл и запустите задачу.
- Вернуть ответ.
- Обработать файл на фоне.
- Позвольте клиенту узнать через канал, что работа выполнена!
У меня есть все это, но для одной проблемы. На моем сервере разработки очередь задач, похоже, не обрабатывает задачи в фоновом режиме. Чтобы имитировать длительную работу, я просто высыпал там.
def post(self):
time.sleep(60)
#use a channel to let the client know we're done
Похоже, что сервер разработки GAE является однопоточным. Он не отвечает вообще до тех пор, пока элемент не будет обработан из очереди? Правильно ли это предположение? Есть идеи?
Благодаря
Добавление кода exanples:
#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')
Вы могли бы разместить соответствующую часть своего кода? – systempuntoout
Готово - добавлен код. Надеюсь, этого достаточно. – ConfusedNoob