2014-02-03 1 views
0

У меня есть процесс Python, который считывает файлы из базы данных, а затем записывает их в объеме сети через FOUT:Python Process выдает выделение памяти, пытаясь записать файл, но есть много доступной памяти. В чем причина?

например:

fout = open((strOutputPath + strOutputName), 'wb') 
for row in tupSQLResults : 
    fout.write(row[0]) 

fout.close() 

99% времени, это успешно. Однако, в некоторых случаях, я получаю прекрасный: [Errno 12] Не удается выделить память через str (sys.exc_info() [1])

Когда это происходит, я проверил память аппарата, и обычно Процесс Python использует только что-то вроде 36mb (аналогичная виртуальная память), с 3 + gbs свободной оперативной памяти. Он будет продолжаться до следующих файлов и, как правило, выводит их в порядке. (Это запланированная задача, которая выполняется каждые 5 минут и выводит любые файлы с более новой меткой времени в db.)

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

Спасибо!

ответ

1

Возможно, по какой-то причине сетевой том недоступен.

Я бы выбрал исключение, спящий процесс на некоторое время и повторю попытку.

+0

Это звучит неплохо. Я просто не ожидал, что ошибка выделения памяти будет вызвана недоступным местом вывода. –

+0

Ошибка распределения памяти может быть на сетевом устройстве. Трудно сказать, что вы сказали здесь. Тем не менее, ожидание и попытка снова, вероятно, исправит это. – joel3000

+0

Он оказался на сетевом томе. –

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