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
是否可以访问 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