我想实现一些可能需要很长时间的现有DRF API方法(特别是列表方法)的异步版本。我的想法是捕获经过身份验证的用户ID,他想要执行的方法和查询字符串;然后排队任务以运行该方法。似乎最简单的事情是任务处理程序为实际的API方法创建一个模拟请求,然后将结果存储在某处以便轮询处理程序读取。
我的问题是:如何有效地创建模拟Django请求(包括用户和查询字符串),然后将其用于直接创建视图集或将请求分派到相应的URL路径?从API的角度来看,Django测试客户端实际上似乎非常适合我的意图,但我不确定在生产中使用它是否是一件好事?
感谢。
答案 0 :(得分:4)
我明白了。这是一个摘录:
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()