【发布时间】:2020-08-29 04:36:30
【问题描述】:
在我的应用中,单击按钮会向我的服务器发送 XHR 请求以升级帐户并向用户收费。
def upgradeView(request):
if request.user.upgraded == False:
billAccount(request.user.id)
else:
return HttpRequests('Already billed')
request.user.upgraded = True
request.user.save()
return HttpResponse('OK!')
我可以使用 Javascript 更改按钮,以便在用户单击一次后将其禁用。如何在服务器端确认用户不能同时提交 5 个 XHR 请求并最终被计费 5 次?我有一个手动检查,检查他们是否已经计费,但是如果 billAccount 函数需要几秒钟,并且多个请求能够在用户能够设置为升级之前触发billAccount调用怎么办?
越想越觉得不可能阻止多个请求滑入。即使billAccount调用是一毫秒,这仍然足够多个请求进来的时间。
【问题讨论】:
标签: django concurrency locking