Ajax每秒发送请求并提高CPU使用率

时间:2018-08-06 11:33:49

标签: javascript ajax django web websocket

我有一个应用程序,该应用程序每秒发送请求以进行查看,在那里我从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)

1 个答案:

答案 0 :(得分:1)

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

如果实际上是网络,那么可以,也许可以看看API是否支持Websocket。