2015-03-18 4 views
0

Я понимаю, что Python's logging module является синхронным.природа модуля регистрации Python

Пожалуйста, исправьте меня, если я ошибаюсь.

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

Например, в сценарии тяжелой записи, если я вызываю запись в журнале «n», а фактическая запись происходит в «n + 2» секунды, в файле журнала она будет использовать «n» в качестве отметки времени или будет используйте «n + 2» в качестве отметки времени

ответ

0

Порядок написания «n» в определенном файле журнала был отправлен в ОС.

Итак, насколько я знаю, python не может контролировать процесс между, скажем, logging.debug("Logging "%s" % datetime.datetime.now(), пока он, наконец, не будет записан в файл.

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

+0

Как вы думаете, что произойдет, если я сделаю то же самое из языковой реализации низкого уровня, например c – binithb

+0

Ну, есть несколько вещей, которые вы могли бы попробовать. Вы можете использовать stdout вместо входа в файл, чтобы узнать, меняется ли скорость. Запись в файл иногда является дорогостоящей задачей для машины, если файл слишком велик, или на машине есть проблемы с жестким диском, это может замедлить ведение журнала. И если диск IO кажется проблемой, вы могли бы, конечно, написать простую программу на языке C с записью неформатированных данных в файл, это было бы очень быстро и точно. Но в конце дня IO диска тоже очень важен, и он не имеет ничего общего с C или Python. – lapinkoira

+0

Также я думаю, что вы можете использовать что-то вроде этого http://www.machinalis.com/blog/rt-notifications-gevent-gis/, забывая о части Django и используя gevent-socketio и Redis с RabbitMQ вместо того, чтобы писать в файл журнала , – lapinkoira

Смежные вопросы