0
我的问题可能听起来有点奇怪,但我想要做的是停止计算当前请求的某些响应(我拥有的端点相当“沉重”且需要几秒钟一旦用户发送另一个更新的请求到同一个端点,就完成了)。例如,用户可以玩过滤复选框,所以我总是对最近的请求感兴趣(先前的请求可以安全地中止)。这种行为是否可以在Django中实现?谢谢。中止旧的请求,当新的请求到来时
我的问题可能听起来有点奇怪,但我想要做的是停止计算当前请求的某些响应(我拥有的端点相当“沉重”且需要几秒钟一旦用户发送另一个更新的请求到同一个端点,就完成了)。例如,用户可以玩过滤复选框,所以我总是对最近的请求感兴趣(先前的请求可以安全地中止)。这种行为是否可以在Django中实现?谢谢。中止旧的请求,当新的请求到来时
开箱即用不能有这种行为。但它可以使用任务队列(芹菜或其他)和会话来解决。
@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...")
的缺点是,你需要另一种观点轮询:伪例子 - 芹菜,这将使用任务的计算,存储在会话中的当前TASK_ID,并在必要时撤销它做任务状态并显示结果。
我不明白它有多奇怪。这很平常,至少不是罕见的。 – Pac0