Движок приложения - загрузка большого файла и анализ данных из него в хранилище данных - PullRequest
0 голосов
/ 05 февраля 2010

У меня есть файл, содержащий ~ 16 000 строк информации о сущностях. Предполагается, что пользователь загружает файл с помощью формы загрузки HTML, затем система обрабатывает ее, читая построчно и создавая затем помещая () объекты в хранилище данных.

Я ограничен 30-секундным ограничением времени запроса. Я перепробовал множество различных решений, используя Очередь задач, принудительное перенаправление HTML и т. Д., И у меня ничего не получилось.

Я использую принудительное перенаправление HTML, чтобы удалить все данные, и это работает, хотя ОЧЕНЬ медленно. (4-й ответ здесь: Удалить все данные для вида в Google App Engine )

Я не могу применить это к моей проблеме с загрузкой, так как мой метод должен быть методом POST. Есть ли какое-то решение? Пример кода будет очень полезен, так как я очень новичок в веб-разработке в целом.

Ответы [ 2 ]

2 голосов
/ 05 февраля 2010

Чтобы решить аналогичную проблему, я сохранил набор данных в модели с одним TextProperty, а затем создал задачу taskqueue, которая:

  1. Извлекает набор данных из хранилища данных, если они еще остались.

  2. Проверяет, является ли длина набора данных <= N, где N - это небольшое количество объектов, которые вы можете поместить () без тайм-аута. Я использовал 5. Если это так, запишите отдельные объекты, удалите запись набора данных и создайте новую копию задачи. </p>

  3. Если размер набора данных был больше, чем N, разделите его на N частей в том же формате и запишите их в хранилище данных, удалите исходную сущность и создайте новую копию задачи.

0 голосов
/ 08 февраля 2010

Если вы делаете это для массовой загрузки данных, почему бы не использовать массовый загрузчик ?

Если вам нужен интерфейс, доступный для пользователей, не являющихся администраторами, то, какПредполагается, что вам нужно разбить файл на части приличного размера (взяв блоки по n строк), поместить их в хранилище данных и запустить задачу для обработки каждого из них.

...