Урок 20 / 22 · Commentail 1.3.2
Обновление библиотеки затрагивает не только файлы Python. Могут измениться таблицы, static и шаблоны. На рабочем сайте сначала подготовьте отдельную копию базы и репетицию; не проверяйте восстановление поверх единственного экземпляра данных.
Снимок до обновления
Сохраните текущие wheel/версии зависимостей, настройки, template overrides, media и секреты в защищённом месте. Сохраните тот же SECRET_KEY: от него зависят существующие ссылки Commentail. Секреты не прикладывайте к публичному issue или архиву курса.
Для финальной согласованной копии остановите записи на сайте и обработчик. SQLite копируйте через backup API, а не копированием живого файла отдельно от журнала:
import sqlite3
with sqlite3.connect("db.sqlite3") as source:
with sqlite3.connect("backup.sqlite3") as destination:
source.backup(destination)
Этот фрагмент запускается из папки вашей базы; пути измените под проект, назначение должно быть новым файлом. Для PostgreSQL можно сделать custom-format dump и восстановить его в отдельную пустую базу:
pg_dump -Fc --file=site-backup.dump YOUR_DATABASE
pg_restore --exit-on-error --single-transaction --dbname=YOUR_EMPTY_RESTORE_DATABASE site-backup.dump
Команды требуют настроенных прав/подключения. pg_dump не сохраняет роли и tablespaces всего кластера; их обслуживают отдельно. Проверьте успех команды и доступность архива, а не только наличие имени файла.
Репетиция
В восстановленной копии оставьте почту локальной, чтобы не отправить реальные письма повторно. Установите проверенную версию, выполните migrate, check, collectstatic. Проверьте старые комментарии, ответы, ожидающие правки, права, Site/Page settings, overrides и существующие гостевые ссылки. Убедитесь, что импортируется установленный пакет, а не соседняя исходная папка.
Прочитайте release notes целевой и всех промежуточных версий. Для перехода с 1.3.1 на 1.3.2 новой миграции нет. Переход с 1.3.0 или раньше включает необратимую миграцию 0018: остановите старые writers и worker, сохраните SECRET_KEY, не запускайте старый и новый код против общей базы. Большие таблицы могут потребовать времени, блокировок и места транзакции.
Что означает откат
Замена wheel старой версией не отменяет преобразование данных. Проверьте восстановление согласованных старой базы, пакета и ключа до production. Восстановление старого снимка теряет более поздние записи. Очередь из снимка может содержать письма, отправленные после его создания: оставьте worker выключенным, разберите задания и только потом возобновляйте обработку.
После разрешённого рабочего обновления повторите проверку реального домена, почты и прокси, обновите static и перезапустите процессы. Успешное migrate не доказывает, что пользовательский сценарий работает.
Другие уроки по этой задаче
- 13. Меняем шаблоны и страницы подтверждения
- 19. Рабочий сайт: nginx, кеш и данные пользователей
- 21. Что делать, если комментарии не работают
Выберите способ входа или оставьте комментарий как гость ниже.