我用的是应用程序服务器。我希望得到的许多请求(数十个)非常接近,这将使我的一些数据处于不一致的状态。该数据的清理可以有效地批处理-例如,最好只运行我的清理代码一次,在几十个请求都已经完成之后。我不知道到底会有多少个请求,也不知道他们会有多近。如果清理代码多次运行是可以的,但它必须在最后一个请求之后运行。
减少清理运行次数的最佳方法是什么?
我的想法是:
public void handleRequest() {
manipulateData();
if (memCacheHasCleanupToken()) {
return; //yay, a cleanup
我想为Google App Engine项目运行本地Django单元测试。GAE最近收到了一些,允许用户为memcache、数据存储、任务队列等创建存根。
我希望能够使用Django的单元测试框架。我的第一个想法是重载,为每个测试用例执行以下操作:
# setUp
self.testbed = testbed.Testbed()
# Then activate the testbed, which prepares the service stubs for use.
self.testbed.activate()
# Next, declare which service stubs
由于我使用Node.js的时间还不长,我遇到了以下问题。我知道,使用回调驱动的范例,我们需要将同步代码中使用的循环转换为递归。我的问题是我不能理解递归的深度节点,不同测试的结果是不一致的。例如,我尝试了在Web上找到的代码:
var depth = 0;
(function recurseBaby() {
// log at every 500 calls
(++depth % 500) || console.log(depth);
// bail out ~100K depth in case you're spec
在使用App ( ndb.get_multi() )中的从Memcache获取多个密钥时,我看到了非常糟糕的性能。
我正在抓取500件小物件,它们都在内存缓存中。如果我使用ndb.get_multi(keys)完成这一操作,则需要1500 If或更多。以下是App的典型输出:
和
如您所见,所有数据都是从memcache提供的。大多数情况下报告为RPC调用之外。但是,我的代码是尽可能少的,所以如果将时间花在CPU上,那么它必须位于ndb内的某个地方:
# Get set of keys for items. This runs very quickly.
item_keys = m