gpt4 book ai didi

python - 将 Django 请求对象传递给 celery 任务

转载 作者:太空狗 更新时间:2023-10-30 00:44:19 25 4
gpt4 key购买 nike

我在 tasks.py 中有一个这样的任务:

@app.task
def location(request):
....

我正在尝试将请求对象直接从少数传递给任务,如下所示:

def tag_location(request):
tasks.location.delay(request)
return JsonResponse({'response': 1})

我收到一个错误,我猜它不能被序列化?我该如何解决?麻烦的是我也有文件上传对象..它不都是简单的数据类型。

最佳答案

因为请求对象包含对序列化不实际的东西的引用——比如上传的文件,或者与请求关联的套接字——所以没有通用的方法来序列化它。

相反,您应该只拉出并传递您需要的部分。例如,像这样的东西:

import tempfile

@app.task
def location(user_id, uploaded_file_path):
# … do stuff …

def tag_location(request):
with tempfile.NamedTemporaryFile(delete=False) as f:
for chunk in request.FILES["some_file"].chunks():
f.write(chunk)
tasks.location.delay(request.user.id, f.name)
return JsonResponse({'response': 1})

关于python - 将 Django 请求对象传递给 celery 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31304095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com