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);
我可以在此指定多少个选项参数?有上限吗?
答案 0 :(得分:2)
我认为分配给JVM实例的最大内存量存在硬上限,可能介于几十到几百MB之间。
在达到该限制之前,可能存在平台/客户端特定的大小限制,因为您基本上构建了HTTP GET或POST请求(取决于您设置TaskOptions
的方式)。最终处理请求may have its own limits on size的客户端。
但即使在最坏的情况下,您也应该能够使用GET格式的URL /请求传递至少2 KB的数据(无论它是分布在多个参数还是只分配一个)。如果App Engine莫名其妙地使用与Internet Explorer相同的请求处理代码,那就是这样。我认为谷歌代码很可能只能处理这个问题。
为什么不试试看呢?只需编写一个循环,将越来越长的任务排队,直到它最终失败,并注销触发失败的请求的大小。
答案 1 :(得分:0)
release notes for version 1.5.0 of the SDK说出以下内容:
任务队列有效负载限制已增加。队列每个任务支持100KB。
QueueConstants class有一个maxPushTaskSizeBytes()
方法,您可以调用该方法来获取大小。
source code for QueueConstats.java确认限制为100k:
private static final int MAX_PUSH_TASK_SIZE_BYTES = 100 * (1 << 10);