«Файловый дескриптор вне диапазона в select()» при использовании подпроцесса Python с rsyncPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 «Файловый дескриптор вне диапазона в select()» при использовании подпроцесса Python с rsync

Сообщение Anonymous »

Приведенный ниже код используется для синхронизации загруженного изображения с другим местом. это работает, но через некоторое время (около 10 дней) служба становится непригодной для использования, отображается ошибка: «дескриптор файла вне диапазона в select()», но перезапуск службы решает проблему.

Код: Выделить всё

# sync.py

def sync_file(source_pic, hashval, retry_num=3):

pic_path = os.path.join(gen_dir(hashval), os.path.split(source_pic)[1])
filename = tempfile.mkstemp()[1]
with open(filename, 'w') as f:
f.write(pic_path)

for sync_path in options.sync_paths:
try_num = 0
rsync_cmd = ['rsync','-au', '--files-from='+filename, options.pic_path, sync_path]

while try_num < retry_num:
proc = subprocess.Popen(rsync_cmd,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout_value, stderr_value = proc.communicate()

if len(stderr_value) != 0:
logger.error('sync failed: %s' % stderr_value)
try_num = try_num + 1
#raise UploadException('sync failed')
else:
break

os.remove(filename)
Информация журнала:

Код: Выделить всё

File "/path/to/sync.py", line 25, in sync_file
stdout_value, stderr_value = proc.communicate()
File "/usr/lib/python2.6/subprocess.py", line 691, in communicate
return self._communicate(input)
File "/usr/lib/python2.6/subprocess.py", line 1211, in _communicate
rlist, wlist, xlist = select.select(read_set, write_set, [])
ValueError: filedescriptor out of range in select()
есть ли незакрытые дескрипторы файлов, вызывающие ошибку? кажется, что подпроцесс не закрывает дескриптор файла, поэтому, когда он запускается 1024 раза, дескриптор файла выходит за пределы допустимого диапазона. (мы используем Python 2.6, подпроцесс вынужден использовать select.select(), который имеет ограничение в 1024 файловых дескриптора, даже доступен epoll)

Подробнее здесь: https://stackoverflow.com/questions/769 ... ss-with-rs
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»