Django PermissionError: [WinError 32] Процесс не может получить доступ к файлу, потому что он используется другим процессом
Я загружаю файлы на Google Drive, сначала загружая файлы в систему, а затем на Google Drive, после чего сразу же удаляю их в одном процессе. Но здесь я получаю ошибку.
views.py
tfile = request.FILES['file']
temp = db.FileTemp(files=tfile)
temp.save()
media_metadata = {
'name': str(tfile),
'parents': [folder.objects.filter(user__username=user)[0].id_folder]
}
media = MediaFileUpload(os.path.join(temp.files.path), mimetype='image/jpeg', resumable=True)
upfile = drive.files().create(body=media_metadata, media_body=media, fields='id').execute()
user_permission = {
'type': 'anyone',
'role': 'reader',
}
perm = drive.permissions().create(fileId=upfile.get('id'), body=user_permission).execute()
link = drive.files().get(fileId=upfile.get('id'), fields='webViewLink').execute()
result['status'] = True
result['link'] = link['webViewLink']
temp.delete()
models.py
class FileTemp(models.Model):
files = models.FileField(upload_to="file")
@receiver(post_delete, sender=FileTemp)
def foto_file_delete_handler(sender, **kwargs):
filed = kwargs['instance']
storage, path = filed.files.storage, filed.files.path
storage.delete(path)
Я бы проверил, является ли вызов API асинхронным, затем, если функция, загружающая файл, все еще читает его, когда вы пытаетесь его удалить.