Эта ошибка вылезает из-за того, что таска получает аргумент, который не может сериализовать. И, соответственно, передать туда request.FILES['file'] тоже не получится.
Нашел, как мне казалось, сто процентное решение:
views.py:
class AddFileView(View):
def post(request):
form = AddFileForm(request.POST, request.FILES)
if form.is_valid():
file_path = request.FILES['file'].temporary_file_path()
upload_file.delay(file_path)
return redirect(...)
tasks.py
@app.task
def upload_file(file_path):
shutil.copy(file_path, MEDIA_ROOT)
return 'Upload is complete'
Проблема с сериализацией решена, но загрузка файла все равно блокирует клиент, не могу понять почему.