Мне нужно открыть файл, который NFS установлен на моем сервере. Иногда NFS-монтирование выходит из строя таким образом, что приводит к блокировке всех файловых операций. Чтобы предотвратить это, мне нужен способ, чтобы функция open
в тайм-ауте python после установленного периода. Например. что-то вроде open('/nfsdrive/foo', timeout=5)
. Конечно, по умолчанию open
процедура не имеет timeout
или аналогичного ключевого слова.Использовать таймаут, чтобы предотвратить тупик при открытии файла в Python?
Кто-нибудь знает, как эффективно остановить попытку открыть (локальный) файл, если открытие занимает слишком много времени?
Примечание: Я уже пробовал модуль urllib2, но параметры таймаута работают только для веб-запросов, а не локальных.
Вы можете попробовать запустить таймер, который, когда истек, отправляет ваш самый процесс сигналу на этот сигнал и справляется с отказом , или остановите таймер, если работает 'open'. Не уверен, что решение будет работать на Windows, если это ваша платформа - это довольно простой подход ... –
В зависимости от ОС в файле/etc/fstab есть параметр timeo. Я предлагаю вам кук на ваших страницах для этого файла. – cdarke
Если вы используете unix, вы можете использовать флаг O_NONBLOCK с низким уровнем 'os.open', чтобы открыть файл и использовать' select.select', чтобы ждать файла с таймаутом. – Binux