Повторное сохранение
A REAPETED SAVE(ориг)
Йен С просматривал портфолио приложений, поддерживаемых его компанией, и наткнулся на одно из них, которое… в общем, можно сказать было результатом несчастного случая, чем целевая разработка. Экземпляр на 90% составлен из копипаст кода, по написанию и конструкции представлен стилистической смесью из исключений и GOTO, в придачу к этому пачка инициализированных, но неиспользуемых переменных. Некоторые модули/пакеты в приложении наполнены синтаксическими ошибками, а по факту не несли полезной нагрузки. И из этого беспорядка Йен выудил это:
while True:
try:
product.save (force_insert=True)
except:
pass
if Product.objects.filter(version=pv,productType=pt).count() is not 0:
break
time.sleep (1)
Это Django, то есть изначально этот код часть ORM-взаимодействия*. Следуя ему, здесь происходит попытка сохранения объекта в базе данных. И если эта попытка выше не удается, даже по неизвестной причине… это игнорируется. А затем проверяется, есть ли продукт с такой же комбинацией: версия и тип – это позволит выйти на ответвление и установить уникальность этого product, но я бы и гроша ломаного не выложил, если бы было хоть какое-то совпадение в сравнении… позволяющее выйти из бесконечного цикла.
Ведь если это не так, значит продукт не внесен в базу. Значит просто подождем одну секунду и попробуем снова. И снова. И снова. И…
Существует миллион лучших способов выразить это, но я искренне впечатлён решимостью, которую показывает выделенный скрипт. Он не сдается. Он никогда не сдастся. Он запишет значение в базу или умрет в попытке. Именно так добиваются победы!
2018 Apr 03 by Remy Porter
Источник http://thedailywtf.com/articles/a-repeated-save
* Программная реализация упрощающая работу между объектом и базой данных для "ускорения" разработки