Java appengine任务有效负载可以有多大?

Java appengine任务有效负载可以有多大?,java,google-app-engine,scheduled-tasks,payload,Java,Google App Engine,Scheduled Tasks,Payload,我正在使用java appengine的新实验任务队列,并尝试创建在数据存储中聚合统计信息的任务。我试图计算数据存储中所有实体(特定类型)中唯一值的数量。更具体地说,假设X类型的实体有一个字段a。我想计算数据存储中a的唯一值的数量 我当前的方法是创建一个任务,该任务查询类型X的前10个实体,创建一个哈希表来存储in的唯一值,然后将该哈希表作为有效负载传递给下一个任务。下一个任务将计算接下来的10个实体,以此类推,直到我完成所有实体。在上一个任务的执行过程中,我将计算哈希表中的键数(一直从一个任务

我正在使用java appengine的新实验任务队列,并尝试创建在数据存储中聚合统计信息的任务。我试图计算数据存储中所有实体(特定类型)中唯一值的数量。更具体地说,假设X类型的实体有一个字段a。我想计算数据存储中a的唯一值的数量

我当前的方法是创建一个任务,该任务查询类型X的前10个实体,创建一个哈希表来存储in的唯一值,然后将该哈希表作为有效负载传递给下一个任务。下一个任务将计算接下来的10个实体,以此类推,直到我完成所有实体。在上一个任务的执行过程中,我将计算哈希表中的键数(一直从一个任务传递到另一个任务),以找到一个任务的唯一值的总数

这适用于我的数据存储中的少量实体。但是我担心一旦我有了很多独特的值,这个哈希表就会变得太大。appengine任务的有效负载的最大允许大小是多少


你能建议其他的方法吗

谢谢

根据文件,.

“你能建议其他方法吗?”

通过基于值构造一个键并使用
模型,为每个唯一值创建一个实体。获取\u或\u插入
。然后
Query.count
使用正常的分页技巧,以1000个为一批对实体进行计数(或在请求超时之前可以计数的数量-超过10个)


或者使用与文档中为
get\u或\u insert
提供的代码类似的代码来保持边运行边计数-应用程序引擎事务可以运行多次,因此事务中增加的memcached count是不可靠的。不过,这可能有一些技巧,或者您可以将计数保存在数据存储中,前提是您没有对实体父级做任何不愉快的事情。

这可能为时已晚,但可能有用。首先,只要您有机会连续浏览一组实体,建议使用已创建日期或已修改日期的自动更新字段,该字段已编制索引。从这一点上,您可以创建一个带有TextProperty的模型,以使用json.dumps()存储哈希表。您所需要做的就是传递最后处理的日期和哈希表实体的模型id。使用创建日期晚于最后一个日期的日期执行查询,json_()加载TextProperty,并累积接下来的10条记录。可能会变得更复杂一些(例如,通过使用传递的参数和稍微不同的查询方法来处理date_创建的冲突)。为下一个任务添加1秒倒计时,以避免过快更新哈希表实体时出现任何问题。HTH,-stevep

对象大小=有效负载大小吗?您需要以某种方式序列化对象。这就是有效载荷。如果您预计它将超过10k,则可以使用延迟库的技巧,序列化包含实际数据的数据存储实体的密钥。配额页面的更新URL: