Celery 任务中的访问请求方法

Access Requests Method within Celery Task

是否可以访问 django 项目中 celery 任务中的请求。POST/GET 方法?我读到这是不可能的,因为芹菜无法序列化请求 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<strong>.urlencode()</strong>)
    return render(request, 'example/index.html', {'task_id': task.task_id})

在接收端,您可以用以下方法重构 QueryDict

from django.http import <strong>QueryDict</strong>

def some_task(data):
    GET = <strong>QueryDict(</strong>data<strong>)</strong>
    # work with GET …
    pass