【问题标题】:Access Requests Method within Celery TaskCelery 任务中的访问请求方法
【发布时间】:2021-12-21 16:32:36
【问题描述】:

是否可以在 django 项目中的 celery 任务中访问 requests.POST/GET 方法?我读过这是不可能的,因为 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})

【问题讨论】:

    标签: django python-requests celery


    【解决方案1】:

    您可以使用.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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2019-12-18
      • 2016-12-25
      • 2019-12-15
      • 2021-09-10
      • 2015-10-20
      • 1970-01-01
      相关资源
      最近更新 更多