微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用ajax轮询减轻繁重的django石墨烯请求

如何解决使用ajax轮询减轻繁重的django石墨烯请求

我有一些查询会导致超时。因为在某些非常特定的边缘情况下,数据的计算在服务器上花费的时间太长。我的特定堆栈的最佳解决方案是什么?我想每 20 秒左右轮询一次服务器,看看我的数据是否准备好。但我不确定如何实现这一点。或者如何跟踪哪个客户提出了我当前正在处理的请求。

我的堆栈:

解决方法

由于您使用的是 Django,因此您可以轻松地使用 Django Channel 在 Django 中启用 websocket。

使用 websocket,您可以在数据准备好时从服务器向发出请求的客户端发送异步通知,因此您无需每秒轮询一次。

在该链接中有创建双向通信的所有信息。本教程适用于聊天系统,但您可以轻松适应您的需求

,

你有选择。 一个是 Apollo 重试链接,您可以使用如下

    const myLink = new RetryLink({
          delay: {
            initial: 300,max: Infinity,jitter: true
          },attempts: {
            max: 5,retryIf: (error,_operation) => !!error
          }
    });

我认为这是最不费力的方法。 Retry Link Doc

第二个选项是使用订阅而不是查询。订阅是客户端和服务器之间的开放链接,通常用于聊天应用程序或任何实时需要的东西,因此您可以使用它,当服务器完成计算时,客户端将得到响应。 您必须在 client sideserver side 上做一些工作才能使其正常工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。