Как безопасно обновить живой веб-сайт

Используйте itertools.dropwhile с обоих концов:

from itertools import dropwhile

input_data = ["0", "0", "1", "1", "0", "0", "1", "0", "1", "0", "0", "0"]

def predicate(x):
    return x == '0'

result = list(dropwhile(predicate, list(dropwhile(predicate, input_data))[::-1]))[::-1]
result

Выход:

['1', '1', '0', '0', '1', '0', '1']
7
задан user27478 10 March 2009 в 13:01
поделиться

5 ответов

Если это - действительно большая проблема, Вы могли бы включать версию кода как своего рода скрытую переменную в каждой из Ваших форм. Если отправленная версия не соответствует в настоящее время рабочей версии приложения, Вы могли бы отобразить надлежащую ошибку и заставить их заполнять любые новые поля, которые могли бы существовать на форме. Вы могли даже пойти немного далее и только отобразить сообщения, для которых изменилась форма. Возможно создайте своего рода хеш на основе определения формы и использование что как скрытое поле. Если хеш является неправильным, Вы знаете, что они отправляют неправильную форму.

1
ответ дан 7 December 2019 в 16:46
поделиться

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

Что относительно того, чтобы "сократить" представление содержания, поскольку окно обслуживания приближается, для уменьшения пользователей, на которых повлияли, тем, кто оставил их браузеры открытыми?

0
ответ дан 7 December 2019 в 16:46
поделиться

Изменения в опубликованном API (или UI, в этом случае) всегда хитро. Если возможно, сохраните назад совместимость. Для большинства форм я счел бы, что функциональность не изменится между версиями. Вы могли бы добавить или удалить поле или два, но это будет обработано проверкой формы на бэкенде. Это по существу, что Вы описываете на своем шаге 4. Я действительно не рассматриваю так большую часть проблемы; Ошибки периода выполнения происходят со времени с другим - пока Ваше приложение обрабатывает его корректно и сообщает пользователю о проблеме, затем без проблем действительно.

2
ответ дан 7 December 2019 в 16:46
поделиться

Существует много сайтов, которые я использую (предоставленный, главным образом внутренний моему месту занятости), которые объявляют о чем-то как, "Мы снизимся для обслуживания на эти ближайшие выходные с 18:00 в субботу до 6:00 в воскресенье утром. Запланируйте быть от системы в то время". В то время как это не прекрасно, ничто не, и это походит на хороший подход. Просто вырежьте от большого количества времени, чтобы произвести новый материал, протестировать его и откатывать к старому в случае необходимости. Если Вы чувствуете, что это необходимо, Вы могли бы всегда настраивать простую страницу, которая говорит "Извините, что мы не доступны теперь" и прямые люди к этому в течение времени простоя. Обычно никто не будет жаловаться, не ли Вам нужно все время, Вы первоначально заявили, и Вы вернулись рано (возможно, бездельники, которые хотят оправдание избежать, чтобы работа была бы исключением, но они, вероятно, не работают затем так или иначе).

0
ответ дан 7 December 2019 в 16:46
поделиться

'Корректный' способ сделать это состоит в том, чтобы иметь четко определенные представления, которые обрабатывают этот весь класс отказа корректно. В случае добавления нового поля к Вашей модели, которая требуется (я предполагаю, что это - то, что происходит), представление должно иметь дело с этим за исключением ValidationError, которое бросает дружественное сообщение об ошибке и передает пользователя обратно форме (который при перезагрузке должен иметь новое поле в наличии). Какие поля добавляются к модели, исключение бросит чистую ошибку и передаст пользователя обратно.

0
ответ дан 7 December 2019 в 16:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: