Найти - Пользователи
Полная версия: Проблема с удалением файла созданного в другом потоке.
Начало » Python для экспертов » Проблема с удалением файла созданного в другом потоке.
1 2
Ferroman
Суть такова - есть 2 потока, в одном запускается екстернальный тулза (через process), которая создаёт файл на диске. Другой процес ждёт файлов в папке и, как только такой появляется, аплоадит на хостинг. После чего удаляет.
Вот тут-то и проблема - при попытке удаления файла получаю WindowsError - The process can't access the file because it is being used by another process.
Хотя аплоадит файл успешно. Куда копать - непонятно. Что можно попробовать дабы побороть?
slav0nic
а точно файл закрывается 2м процессом перед удалением?
Андрей Светлов
То штука известная. У меня часто на юниттестах лезет - а иногда и в рабочем коде.
Винда не совсем сразу (не атомарно) закрывает все ресурсы из убитого процесса - если он сам их явно не закрыл.
И можно попасться. Я просто пытался в таком случае чуть-чуть подождать и повторить. Помогает.
Ferroman
Андрей Светлов
Спасибо, попробую.
slav0nic
Поискал - хйз, вроде бы везде закрывается. Я на всякий случай явно прописал везде, может поможет.
Ferroman
Если ждать около минуты - удаляется (я пытался удалить файл каждых 2 секунды).
Абзац просто.
sypper-pit
как вариант по пробывать убить процесс по pid а затем удалить фаил и заного запускать нужный процесс
Lexander
Ferroman
Настолько критично? Можно ведь по-другому алгоритм удаления написать.
sypper-pit
Lexander
Привет :)
по идее в питоне можно реализовывать разные алгоритны просто требуется код который быблоб хорошо посмотреть :) , да и посмотреть где реализованный код… по идее этоб был правильный вопрос…
Ferroman
покажи код :)
Ferroman
sypper-pit
В том-то и все дело, что так не получится.
Lexander
Например?
sypper-pit
Ferroman
тогда я б посмотрел что предлагает “”“Lexander”“” , думаю надо продумать кк именно это реализовать и на сколько это будет просто :) я иногда в такие дебри нырял, что код просто машину подвешал , а можно просто и довольно быстро с небольшой погрешностью :) попробывать …про рыб я помню…
Lexander
По подробнее можешь описать решение ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB