Какое максимальное количество параметров вы можете добавить к задаче Google App Engine? - PullRequest
2 голосов
/ 09 января 2012
TaskOptions taskOptions = TaskOptions.Builder.withUrl("/mytask");
options.param("a", a);
options.param("b", b);
options.param("c", c);
options.param("d", d);
options.param("e", e);
options.param("f", f);
options.param("g", g);
options.param("a1", a1);
options.param("b1", b1);
options.param("c1", c1);
options.param("d1", d1);
options.param("e1", e1);
options.param("f1", f1);
options.param("g1", g1);

Сколько параметров я могу указать здесь? Есть ли верхний предел?

Ответы [ 2 ]

2 голосов
/ 09 января 2012

Я полагаю, что существует жесткий верхний предел максимального объема памяти, выделенного для вашего экземпляра JVM, который может составлять от нескольких десятков до нескольких сотен МБ.

До достижения этого ограничения могут существовать ограничения размера, специфичные для платформы / клиента, поскольку вы в основном создаете HTTP-запрос GET или POST (в зависимости от того, как вы настроили TaskOptions). Клиент, который в конечном итоге обрабатывает запрос , может иметь свои собственные ограничения на размер .

Но даже в худшем случае вы сможете передавать данные объемом не менее 2 КБ, используя URL / запрос в формате GET (независимо от того, распределяется ли он по многим параметрам или только по одному). Это было бы, если бы App Engine необъяснимым образом использовал тот же код обработки запросов, что и Internet Explorer. Я думаю, что вполне вероятно, что код Google может обрабатывать немного больше, чем это.

А почему бы просто не попробовать и посмотреть? Просто напишите цикл, который ставит в очередь все более длинные задачи до тех пор, пока он в конечном итоге не сработает, и выйдите из размера запроса, который вызывает сбой.

0 голосов
/ 09 января 2012

Примечания к выпуску для версии 1.5.0 SDK говорят следующее:

Увеличены пределы полезной нагрузки очереди задач. Очереди поддерживают 100 КБ на задачу.

Класс QueueConstants имеет метод maxPushTaskSizeBytes(), который можно вызвать для получения размера.

Исходный код для QueueConstats.java подтверждает ограничение в 100 КБ:

private static final int MAX_PUSH_TASK_SIZE_BYTES = 100 * (1 << 10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...