Джанго перестает печатать на стандартный вывод - PullRequest
1 голос
/ 18 июня 2009

Прежде всего, я использую Windows, просто чтобы прояснить это. Я использую cmd.exe до manage runserver, и сервер работает нормально. Однако иногда, казалось бы, на случайной основе Django просто перестает писать в stdout! Сервер отвечает на мои запросы и все, но ничего не печатается.

Чтобы было еще яснее, я даже не говорю о print в моем коде Django, так что это не может быть проблемой. Я говорю о том, когда он печатает, например. GET /someurl HTTP/1.1, yada-yada ... Нажатие Ctrl + Break и перезапуск сервера не помогают. Однако, если я выйду из командной строки и запущу новую, а затем запустлю сервер, он снова начнет работать.

Есть идеи о том, что происходит? Это с Django 1.0.2 final и Python 2.6.2.

Ответы [ 4 ]

0 голосов
/ 24 июня 2009

Может быть, немного натянуто, но в Python 2.6 под Linux с использованием Twisted Framework (вместо Django) такое поведение происходило всякий раз, когда мое приложение отправляло NULL на stdout, а stdout перенаправлялся в syslog. Я предполагал, что это ошибка в реализации системного журнала витой платформы, но, возможно, это нечто большее. Можете ли вы узнать из логов или активности клиентов, что они делали в последний раз перед потерей stdout, и посмотреть, а) всегда ли это в одном из немногих мест и 2) отправляете ли вы что-нибудь напуганное в то время?

0 голосов
/ 22 июня 2009

Сервер разработки может иногда вести себя странно, просто остановите его с помощью ctrl-break и запустите его снова.

Одна вещь, которую вы можете попробовать, просто чтобы быть уверенным, что сам сервер не остановился, это сделать полное обновление (ctrl-F5), если он не отвечает, то сервер фактически мертв, только что увидели кэшированную версию страницы.

0 голосов
/ 22 июня 2009

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

0 голосов
/ 19 июня 2009

Вы назначаете что-то для sys.stdout или sys.stderr в какой-то момент в вашем коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...