Обнаружение выгрузки объекта из памяти / памяти в GAE - PullRequest
0 голосов
/ 18 марта 2012

Я хочу работать с некоторыми данными в памяти / memcache. Важно отметить, что я не хочу потерять эти данные, поэтому я хотел бы сохранить их в постоянном хранилище, когда GAE решит выгрузить их из памяти.

Прав ли я, что нет способа обнаружить событие выгрузки memcached объекта для GAE?

Могу ли я переопределить __del__(), чтобы сохранить значение глобальной переменной в хранилище данных? (Мне сложно подтвердить этот случай.)

1 Ответ

4 голосов
/ 18 марта 2012

Извините, но это совершенно неправильный способ.Правильнее всего будет записать данные в хранилище данных и memcache, а затем попытаться прочитать их из memcache, а если их там нет, прочитать их из хранилища данных и записать обратно в memcache.

Перегрузка __del__ тоже плохая идея;В общем, это плохая идея, и для этой цели это губительно, поскольку существует множество причин, по которым ваш процесс может быть остановлен без вызова каких-либо __del__ методов.(Например, жесткие условия нехватки памяти, серьезные сбои ядра Python или Linux, сбои оборудования и т. Д.)

Если вы хотите простой способ интеграции memcache и datastore, не думая об этом, попробуйте NDB - он сделает это прозрачно для вас.

...