2024-04-27 04:31:51 发布
网友
我的问题听起来可能有点奇怪,但我想做的是,当用户向同一个端点发送另一个更新的请求时,立即停止计算当前请求的响应(我拥有的端点非常“沉重”,需要几秒钟才能完成)。例如,用户可能会使用筛选复选框,因此我总是对最近的请求感兴趣(以前的请求可以安全地中止)。这种行为可以在Django中实现吗?谢谢
您不能开箱即用,但可以使用任务队列(芹菜或其他)和会话解决此问题。对于芹菜,这将使用用于计算的任务来完成,将当前任务_id存储在会话中,并在必要时撤销它-伪代码示例:
@task def some_computation(*args, **kw): your_code_here return 42 def someview(request, ...): prev = request.session.get("mytaskid", None) if prev: prev.revoke() new = some_computation.apply_async(...) request.session["mytaskid"] = new return HttpResponse("we are computing...")
缺点是您需要另一个视图来轮询任务状态并显示结果
您不能开箱即用,但可以使用任务队列(芹菜或其他)和会话解决此问题。对于芹菜,这将使用用于计算的任务来完成,将当前任务_id存储在会话中,并在必要时撤销它-伪代码示例:
缺点是您需要另一个视图来轮询任务状态并显示结果
相关问题 更多 >
编程相关推荐