Метод запросов доступа в задаче Celery
Можно ли получить доступ к методам requests.POST/GET внутри задачи celery, которая находится в проекте django? Я читал, что это невозможно, потому что celery не может сериализовать JSON объекты запросов. Кроме как брать данные из объекта requests.POST['data'] и передавать их в задачу celery, есть ли какие-нибудь другие обходные пути?
def index(request):
task = run_tasks.delay(request) # I would like to pass the request data to the task
return render(request, 'example/index.html', {'task_id': task.task_id})
Вы можете работать с .urlencode(…)
[Django-doc] для преобразования его в строковый объект и обратно:
def index(request):
run_tasks.delay(data=request.GET.urlencode())
return render(request, 'example/index.html', {'task_id': task.task_id})
на принимающей стороне, вы можете восстановить QueryDict
с помощью:
from django.http import QueryDict
def some_task(data):
GET = QueryDict(data)
# work with GET …
pass