在 long-运行 后台任务中使用 Objectify
Using Objectify in long-running background tasks
我计划使用 Objectify 从 GAE Flex 与 Cloud Datastore 对话。该应用程序将 运行 与 Datastore 对话的多个后台线程,对此我有几个问题。
我不打算使用任何 memcache 设置,因为这些线程将 运行ning 很长时间,我也不希望会话缓存填满。我找不到将 ofy()
设置为从不在本地缓存的方法,唯一的选择似乎是 运行 定期进行 clear()
操作。有没有更好的方法来避免这些缓存?
如我所见,我们需要将 ofy()
的任何此类调用包装在 run()
块中以执行清理。我想确认这是在请求范围之外使用它的唯一方法,并且没有对这些较长上下文的内置支持。
谢谢
你是对的。 ObjectifyService.run()
是 ObjectifyFilter
之外的 运行 请求的方式。
目前没有任何方法可以禁用会话缓存。会话缓存非常深入地编织到 Objectify 的结构中,以便为 @Load
操作获得理智的行为。也不是不可能,只是还没有上升到优先级队列的顶端。
在不遇到内存问题的情况下迭代大量数据存储的最佳方法是迭代指定明确的 chunk()
大小,然后在处理该数量的项目后 clear()
。如果你使用 Guava 的 Iterators.partition()
,这几乎是一条线。
我计划使用 Objectify 从 GAE Flex 与 Cloud Datastore 对话。该应用程序将 运行 与 Datastore 对话的多个后台线程,对此我有几个问题。
我不打算使用任何 memcache 设置,因为这些线程将 运行ning 很长时间,我也不希望会话缓存填满。我找不到将
ofy()
设置为从不在本地缓存的方法,唯一的选择似乎是 运行 定期进行clear()
操作。有没有更好的方法来避免这些缓存?如我所见,我们需要将
ofy()
的任何此类调用包装在run()
块中以执行清理。我想确认这是在请求范围之外使用它的唯一方法,并且没有对这些较长上下文的内置支持。
谢谢
你是对的。 ObjectifyService.run()
是 ObjectifyFilter
之外的 运行 请求的方式。
目前没有任何方法可以禁用会话缓存。会话缓存非常深入地编织到 Objectify 的结构中,以便为 @Load
操作获得理智的行为。也不是不可能,只是还没有上升到优先级队列的顶端。
在不遇到内存问题的情况下迭代大量数据存储的最佳方法是迭代指定明确的 chunk()
大小,然后在处理该数量的项目后 clear()
。如果你使用 Guava 的 Iterators.partition()
,这几乎是一条线。