Sergei_Erjemin
@Sergei_Erjemin
Улыбайся, будь самураем...

Как отлаживать Django в продакшн?

Впервые с таким сталкиваюсь, но все когда-то случается в первый раз. В разработке и продакшн одинаковое окружение. Различаются архитектуры процессоров и операционки, но состав и версии пакетов, версии Python и баз данных -- одинаковые. По факту выдаются разные результаты. Например, в одном месте Pillow картинки рисует не так, в другом перехваты исключений иные выпадают и т.п.

Включил режим отладки в продакшн. И вот, например, в Pillow увидел, что некоторых местах он падал, т.к. не может сам преобразовать float в int (в разработке, он такое "проглатывал"). Но кроме того вижу, что-то не так он считает внутри себя (картинки получаются или со смещением, или какие-то элементы в них пропадают)... Ну и так далее, не только с Pillow... В общем, в продакшн ПОЧЕМУ-ТО некоторые вещи делают что-то вообще не похоже на то что происходило при разработке.

В разработке можно print() в нужном месте сделать, или через PyCharm отследить куда-что ветвится, посмотреть какие значения переменных, поставить условный брек-поинт и т.п. А как быть в продакшн? Там все в nginx и uwsgi "запечатано" и никакого даже консольного вывода... Максимум что видится из возможного -- сделать логер и в него, на подобии print() выкидывать... но это жуть неудобно...

А какие есть еще годные варианты для удаленной отладки и посмотреть, что творится с кодом в продакшн?
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
@rPman
Различаются архитектуры процессоров и операционки
самое простое что можно сделать сначала - попробовать среду разработки сделать ближе к той что на продакшне, т.е. установить у себя в виртуалке хотя бы ту же ОС и битность (или наоборот на сервере)

я правильно понимаю что ты дома пытаешься на x64 windows разрабатывать, а на продакшне у тебя виртуалка почему то x86 32-битная (иначе как объяснить падения преобразования float -> int).

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

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

Войдите, чтобы написать ответ

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