将django请求对象传递给芹菜任务



我在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})

相关内容

  • 没有找到相关文章

最新更新