【问题标题】:Ajax send request per second and make high CPU usageAjax每秒发送请求并造成高CPU使用率
【发布时间】:2019-01-13 08:35:17
【问题描述】:

我有一个应用程序每秒发送请求以查看,我从 API 获取数据并从客户端返回响应

  • Ajax(发送请求)->
  • 查看(发送请求)->
  • Api(视图返回响应)->
  • 查看(客户端返回响应)

我看到这会占用大量 CPU。

  1. 为什么会占用大量 CPU?

  2. 如何优化它? - 我必须按我下载货币的点,我需要每秒下载数据

  3. 我应该使用 WebSocket 吗?

Ajax 代码:

 var ajaxFn = function () {
                  $.ajax({
                      url: '{% url "coinbase_currency_ajax" %}',
                      success: function (response) {
                          if(response) {
                              for(var elem in response) {
                                  $("#"+elem).text(response[elem]+"$");
                              }
                              setTimeout(ajaxFn, 1000);
                          }
                      }
                  });
          };
          ajaxFn();

查看代码:

def currency_price_list(request):
   client=CoinbaseService().client
   btc = client.get_buy_price(currency_pair='BTC-USD') #API COINBASE
   ltc = client.get_buy_price(currency_pair='LTC-USD')
   eth = client.get_buy_price(currency_pair='ETH-USD')
   bch = client.get_buy_price(currency_pair='BCH-USD')

   return JsonResponse({
       "btc": btc['amount'],
       "ltc": ltc['amount'],
       "eth": eth['amount'],
       "bch": bch['amount']
   }, safe=False)

【问题讨论】:

  • 给我们看一些代码

标签: javascript ajax django web websocket


【解决方案1】:

网络活动听起来不应该占用 CPU...您可能需要检查每个请求的初始创建或检索数据的后续处理是否占用大量 CPU。

如果它实际上是网络,那么是的,也许看看 API 是否支持 Websockets。

【讨论】:

  • 如何检查每个请求是否占用大量 CPU?创建循环并监控 CPU?
  • 您应该使用您最喜欢的浏览器的开发工具来分析您的代码,以查看您的代码在哪些方面花费了大量时间。许多教程都在线。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
相关资源
最近更新 更多