Передача (больших двоичных) данных в задачу appengine - PullRequest
3 голосов
/ 30 декабря 2011

У меня есть конечная точка задачи, которая должна обрабатывать данные (скажем,> 1 МБ), загруженные из запроса веб-интерфейса.Однако я не думаю, что смогу передать данные из запроса веб-интерфейса через TaskOptions.Builder, поскольку получу ошибку «Слишком большой размер задачи».

Мне нужно какое-то «временное» хранилище данных длязагруженные данные, которые можно удалить после успешной обработки задачи.

Опция A : сохранить загруженные данные в memcache, передать ключ к задаче.Скорее всего, это сработает большую часть времени, за исключением случаев, когда данные выселены ДО обработки задачи.Если это можно решить, звучит как отличное решение.

Опция B : сохранить данные в хранилище данных (объект, созданный только для этой цели).Передайте идентификатор в задачу.Задача отвечает за удаление объекта после его завершения.

Опция C : использование службы Blobstore.Это, IMHO, концептуально аналогично варианту B.

На данный момент, я думаю, вариант B является наиболее выполнимым.

Ценю любые советы о том, как лучше всего справиться с этими проблемами.ситуаций.

Ответы [ 2 ]

3 голосов
/ 30 декабря 2011

Если вы храните данные размером более 1 МБ, вы должны использовать blobstore. (Да, вы можете сегментировать данные в хранилище данных, но это того не стоит.) Однако есть две вещи, на которые стоит обратить внимание. Убедитесь, что вы записываете данные в blobstore порциями менее 1 МБ. Кроме того, поскольку очередь задач идемпотентна, ваши задачи не должны завершаться сбоем, если запрошенный ключ хранилища BLOB-объектов не существует, поскольку предыдущая задача, возможно, уже удалила его.

1 голос
/ 30 декабря 2011

Опция B тоже не работает, потому что максимальный размер объекта тоже 1 МБ.Тот же лимит, что и для задачи.

Опция A не может дать никакой гарантии, значения могут истекать из memcache в любое время и могут истечь до истечения крайнего срока истечения, установленного для значения.

Imho, вариант C лучше всего подходит для ваших нужд

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