Python 除了1MB写入Memcache之外,还有其他限制吗?

Python 除了1MB写入Memcache之外,还有其他限制吗?,python,google-app-engine,Python,Google App Engine,我有一个奇怪的问题。在任务中,我从数据存储中提取数据并将其异步写入memcache: ke = database.Events.query(database.Events.eventid.IN(eventslist)) eventskeys = ke.fetch(len(eventslist),keys_only = True) data = ndb.get_multi(eventskeys) eventsdic = {} for event in data: eventsdic.

我有一个奇怪的问题。在任务中,我从数据存储中提取数据并将其异步写入memcache:

ke = database.Events.query(database.Events.eventid.IN(eventslist))
eventskeys = ke.fetch(len(eventslist),keys_only = True)

data = ndb.get_multi(eventskeys)

eventsdic = {}

for event in data:
    eventsdic.update({event.eventid: event.participants})

client = memcache.Client()

rpc = memcache.create_rpc()     
response = client.set_multi_async(eventsdic, time=3600, rpc=rpc)
事件列表中有20项。我这样做是为了大约500个项目分散在队列中的不同任务上

我没有得到任何错误。但我注意到,在第一次尝试中,在那之后,memcache中实际存在的500个事件中只有大约300个。如果我只对memcache中尚未出现的事件进行2-3次重试,那么一段时间后,memcache中的事件将达到100%


但我真的不明白,为什么第一次尝试时它不起作用?

可能是因为memcache“监视”了您的数据。经常使用的物品不太可能被逐出。它(据我所知)不仅仅是FIFO类型的系统

对我来说,这不是一个“问题”,因为如果我把东西放进memcache中,当我以后请求它时,它就不在那里了。我将使用我投入的后备机制来应对这种情况。当您请求memcache时,您不能简单地假设memcache中会有任何内容

折衷的办法是,memcache中保存的数据是暂时的,当系统耗尽memcache空间时会被逐出。在极少数情况下,所有memcached数据都可以一次收回


谢谢-但数据写入memcache几秒钟后就可以收回吗?这个任务已经是我的退路了,恢复memcache数据,我发现它根本不存在。我想它可以,如果你添加大量内容,如果空间不足,它会将其中一些内容逐出。事实上,这一切都有点不透明。试着做一些测试,而不是500次,用50次试一试——看看之后是否都有。即便如此,我猜你发现的任何东西都可能随着资源的转移而改变。还请注意,它从来没有提到一个给定的应用程序有多少memcache可用?