私のDjangoのウェブサイトでは、ユーザーが写真をアップロードし、他の人がコメントを付けます。現在のところ、アップロードプロセス全体がブロッキングコールです。代わりに、私はセロリのキューに移動し、非同期に実行したいと思います。そのために、私は単にviews.py
から以下を呼び出します。画像を非同期で処理する(Django)
photo = form.cleaned_data.get('photo',None)
upload_photo.delay(photo, request.user.id)
そして
tasks.py
で、私が持っている:
@celery_app1.task(name='tasks.upload_photo')
def upload_photo(photo_obj, user_id):
photo = Photo.objects.create(image_file = photo_obj, owner_id=user_id)
さて、これを、予想通り、私にEncodeError: <InMemoryUploadedFile: temp.jpg (image/jpeg)> is not JSON serializable
を与えます。それでは、Aysncタスクで重労働をするためにここに従うべき正しいパターンは何ですか?説明的な例が非常に役立つだろう。
p.s.回答者にとって重要な場合は、私はJSの関与がない解決策を探しています。