【问题标题】:How to limit flask/Javascript to access a URL one at a time如何限制烧瓶/Javascript一次访问一个URL
【发布时间】:2020-05-20 16:56:10
【问题描述】:

所以我目前在前端有一个 ajax 请求,它每 7 秒向特定 URL 发送一个请求。因为它是在线的,有时它需要更长的时间来处理这个功能,它最终接受了越来越多的请求,甚至没有接受第一个请求,我最终得到了 4 个 ping 请求。我想知道是否有一种方法可以一次接受一个,所以如果 ajax 请求发送一个请求并且请求之前的那个仍然在 ping ,那么后端将拒绝它,或者也许有一种方法可以在前端做.

setInterval(() => {
$.ajax({
    type: "POST",
    url: "site/example",
.....
}, 7000);

所以在本例中,后端将拒绝对site/example 的请求。前端不会发送 ajax 请求。直到最初的请求没有得到它的回报。它将为下一个请求做同样的事情等等......

【问题讨论】:

  • 在前端而不是在后端限制同时请求会更好(并且可能更容易) - 如果多个客户端想要同时访问端点怎么办?
  • 好的,我该怎么做?我根据你所说的改变了问题
  • 虽然您所要求的在技术上是可行的,但它与 Web 的设计工作方式背道而驰。您能否详细解释一下您的用例以及您为什么也想要这个?这可能有助于我们解决更重要的问题。
  • @GarrettMotzner 我的问题是它每 x 秒检查一次 URL,如果它返回一个文件,它将转到该文件的 URL,有时它会加载 4 个请求,这些请求正在 ping 然后全部接受它们
  • 为什么同时多个请求是一件坏事?通常,您构建 Web 服务器来处理这种情况。该错误通常是当 Web 服务器无法处理所需数量的请求时,而不是太多。但是,有throttling utilities 可以防止客户端在需要时发出过多请求。

标签: javascript ajax flask request


【解决方案1】:

我们可以考虑使用全局标志变量来使用 hack。最初将变量flag 设置为true。在创建ajax 请求之前,检查flag 是否为true。如果为 true 发送请求,并将flag 更改为 false,否则不发送请求(等待下一个 7 秒)。在ajax请求成功(和失败回调)时,将flag改为true,这样我们就可以在7秒后发起下一个连接。此过程将有助于一次有一个连接请求

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 2016-08-27
    • 2014-03-08
    • 2015-10-04
    • 2016-09-24
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2019-06-17
    相关资源
    最近更新 更多