2016-05-05 5 views
8

Я искал какие-либо рекомендации по этому вопросу, но безуспешно. В проекте я часто использую Django data migrations. Они выглядят более или менее похожими на пример из документов. Однако операции иногда довольно сложны, и было бы неплохо иметь некоторый вывод на консоль, суммирующий выполненные операции (т. Е. Что было удалено/создано/перезаписано/и т. Д. И почему).Можно ли печатать на stdout или stderr в миграции данных Django? Если да, то как?

Итак, вопрос в том, правильно ли кодировать такой вход в систему миграции? Если да, то лучше ли использовать модуль logging Python или просто print? В первом случае, вероятно, потребуется дополнительная конфигурация, чтобы сделать эти журналы видимыми (в settings.py?). В последнем случае было бы предпочтительным stderr или stdout?

Вопрос может быть расширен, разрешен ли интерактивный ввод от пользователя. Встроенные средства миграции схем могут задавать интерактивные вопросы, связанные с данными.

Custom management commands Рекомендуемые способы предоставления консольного вывода, который является частью мотивации, стоящей за этим вопросом.

ответ

1

Я думаю, что журнал - это путь сюда. Поскольку вы собираетесь запускать миграцию на своем сервере, лучше сохранить ее в журнале, чтобы вы могли ее поймать, как хотите позже.

1

stderr следует использовать, когда что-то функционально ломается. IE, фактическая ошибка.

Вы должны печатать на stdout в любое другое время.

Так что, если ваши миграции имеют какие-либо ошибки, я бы перенаправил их на stderr. Иными словами, я думаю, что Маршалл X правильно ответил. Если вам нужно вернуться ко всему, что произошло, и вы использовали печать, ну, информации просто нет.

Я бы использовал регистрацию.