Если я открываю и читаю файл, который периодически записывается, может ли произойти тупик ввода-вывода? - PullRequest
1 голос
/ 01 мая 2011

В моем серверном процессе это выглядит так:

Основные бэкэнд-процессы:

  1. Процессы Огромный список файлов и их запись в MySQL.

  2. На каждые 500 готовых файлов он записывает «Отчет о ходе работы» в отдельный файл /var/run/progress.log, например, «200/5000 выполненных файлов»

  3. Этообрабатывается несколькими дочерними элементами, каждый из которых должен быть запущен в отдельном файле.

Процесс веб-сервера:

  1. Считать вывод /var/run/progress.logкаждые 10 секунд через Ajax и отправлять отчеты в индикатор выполнения.

При обработке очень большого списка файлов (например, более 3 ГБ архива) процессы блокируются примерно через 2 часа обработки.

Я не могу найти, что происходит.Означает ли это, что /var/run/progress.log вызвало тупик ввода / вывода?

Ответы [ 2 ]

0 голосов
/ 31 августа 2012

Быстрый совет, убедитесь (как, конечно, супер), что вы действительно закрываете свой файл.

Таким образом, ВСЕГДА используйте для этого блок try-исключением-final

Помните, что содержание последнего блока ВСЕГДА будет выполняться, что предотвратит сильную головную боль:)

0 голосов
/ 20 апреля 2012

В python в Linux это не должно блокироваться, однако попробуйте использовать модуль os

os.open(file, os.O_NONBLOCK | os.O_RDONLY)

и убедитесь, что вы закрыли файл fh.close(), так как Python немного ленивый очистить файлы.

http://docs.python.org/library/os.html

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