从GAE中的memache / memory检测对象卸载

时间:2012-03-18 02:26:44

标签: python google-app-engine memcached

我想在内存/内存缓存中运行一些数据。重要的是,我希望不要丢失这些数据,因此当GAE决定从内存中卸载数据时,我希望将其保存到持久存储中。

我是否正确无法检测GAE的memcached对象卸载事件?

我是否仍会覆盖__del__()以将全局变量的值保存到数据存储区? (对我来说很难验证这个案例。)

1 个答案:

答案 0 :(得分:4)

对不起,但这完全是错误的做法。正确的做法是将数据写入数据存储区和内存缓存,然后尝试从内存缓存中读取数据,如果不是从数据存储区读取数据并将其写回内存缓存区。

重载__del__也是一个坏主意;一般来说这是一个坏主意,并且为此目的它是灾难性的,因为有许多原因可以在不调用任何__del__方法的情况下终止您的进程。 (例如,内存不足的情况,Python或Linux内核的硬崩溃,硬件故障等等。)

如果您想要一种简单的方法来集成memcache和数据存储而不必考虑它,请尝试NDB - 它会为您透明地执行此操作。