django之模拟异步处理请求

zengkefu 阅读:63 2025-06-02 22:19:02 评论:0

我想实现一些现有 DRF API 方法(特别是列表方法)的异步版本,这可能需要很长时间。我的想法是捕获经过身份验证的用户 ID、他想要执行的方法以及查询字符串;然后将任务排队以运行该方法。对于任务处理程序来说,最简单的事情似乎是为实际 API 方法创建一个模拟请求,然后将结果存储在某处以供轮询处理程序读取。

我的问题是:如何有效地创建一个模拟 Django 请求(包括用户和查询字符串),然后将其用于直接创建 View 集或将请求分派(dispatch)到适当的 url 路径?从 API 的角度来看,Django 测试客户端实际上似乎很适合我的意图,但我不确定它是否适合在生产中使用?

谢谢。

请您参考如下方法:

我明白了。以下是摘录:

from django.http import request, QueryDict 
 
view_kwargs = view.kwargs 
query_params = request.QUERY_PARAMS 
 
req = request.HttpRequest() 
req.user = user 
req.method = 'GET' 
req.GET = QueryDict(None).copy() 
req.GET.update(query_params) 
 
resp = viewset_class.as_view({'get': 'list'})(req, **view_kwargs).render() 


标签:Django
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号