Нет хорошего способа защиты от "сбоя вашей программы при записи контрольной точки в файл", но почему вы должны так беспокоиться о , что ?! Что еще делает ваша программа в тот момент, кроме того, что «сохраняет контрольную точку в файл», что может привести к ее аварийному завершению?!
Трудно превзойти pickle
(или cPickle
) за переносимость сериализации в Python, но это просто "превращение ваших ключей и значений в строки". Для сохранения пар ключ-значение (один раз в виде строки) несколько безопаснее, чем просто добавление в файл ( не извлечение файлов, если ваши сбои намного, гораздо чаще, чем обычно, как вы предлагаете tjey) есть).
Если ваша среда невероятно подвержена сбоям по какой-либо причине ( очень дешевый HW? -), просто убедитесь, что вы закрываете файл (и fflush, если ОС также подвержена сбоям ;-), затем снова откройте его для добавления. Таким образом, наихудшее, что может случиться, - это то, что самое последнее добавление будет неполным (из-за сбоя в середине событий) - тогда вы просто поймаете исключение, вызванное снятием этой неполной записи, и вернете только то, что не было сохранено (потому что они не были завершены из-за сбоя, ИЛИ потому что они были завершены, но не полностью сохранены из-за сбоя, в конце концов получается то же самое).
Если у вас есть возможность установить контрольную точку для механизма базы данных (вместо того, чтобы просто делать это с файлами), подумайте об этом серьезно! Механизм БД будет вести журналы транзакций и обеспечивать свойства ACID, что значительно облегчит программирование на стороне приложения, ЕСЛИ вы можете на это рассчитывать! -)