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 асинхронным, затем, если функция, загружающая файл, все еще читает его, когда вы пытаетесь его удалить.

Вернуться на верх