Ferroman
Июль 13, 2009 19:02:40
Суть такова - есть 2 потока, в одном запускается екстернальный тулза (через process), которая создаёт файл на диске. Другой процес ждёт файлов в папке и, как только такой появляется, аплоадит на хостинг. После чего удаляет.
Вот тут-то и проблема - при попытке удаления файла получаю WindowsError - The process can't access the file because it is being used by another process.
Хотя аплоадит файл успешно. Куда копать - непонятно. Что можно попробовать дабы побороть?
slav0nic
Июль 13, 2009 21:19:03
а точно файл закрывается 2м процессом перед удалением?
Андрей Светлов
Июль 14, 2009 18:38:34
То штука известная. У меня часто на юниттестах лезет - а иногда и в рабочем коде.
Винда не совсем сразу (не атомарно) закрывает все ресурсы из убитого процесса - если он сам их явно не закрыл.
И можно попасться. Я просто пытался в таком случае чуть-чуть подождать и повторить. Помогает.
Ferroman
Июль 14, 2009 19:48:07
Андрей Светлов
Спасибо, попробую.
slav0nic
Поискал - хйз, вроде бы везде закрывается. Я на всякий случай явно прописал везде, может поможет.
Ferroman
Июль 14, 2009 21:35:05
Если ждать около минуты - удаляется (я пытался удалить файл каждых 2 секунды).
Абзац просто.
sypper-pit
Июль 15, 2009 17:03:45
как вариант по пробывать убить процесс по pid а затем удалить фаил и заного запускать нужный процесс
Lexander
Июль 15, 2009 18:04:15
Ferroman
Настолько критично? Можно ведь по-другому алгоритм удаления написать.
sypper-pit
Июль 15, 2009 18:23:28
Lexander
Привет :)
по идее в питоне можно реализовывать разные алгоритны просто требуется код который быблоб хорошо посмотреть :) , да и посмотреть где реализованный код… по идее этоб был правильный вопрос…
Ferroman
покажи код :)
Ferroman
Июль 15, 2009 18:24:14
sypper-pit
В том-то и все дело, что так не получится.
Lexander
Например?
sypper-pit
Июль 15, 2009 18:41:03
Ferroman
тогда я б посмотрел что предлагает “”“Lexander”“” , думаю надо продумать кк именно это реализовать и на сколько это будет просто :) я иногда в такие дебри нырял, что код просто машину подвешал , а можно просто и довольно быстро с небольшой погрешностью :) попробывать …про рыб я помню…
Lexander
По подробнее можешь описать решение ?