Sunucu Yönetim Scripti İçin Axios Kullanımı: PM ile Sürekli Çalıştırma (Keep-Alive) ve Toplu İstek (Batch Request) Atma

0 Yanıtlar 3 Görüntülenme
·
Katılımcılar
Konuyu Açan #0
Sunucu yönetiminde otomasyon ve düzenli iletişim, özellikle API tabanlı işlemlerde büyük önem taşır. Bu noktada Axios, Node.js ortamında HTTP istekleri göndermede güçlü ve esnek bir kütüphane olarak öne çıkar. Ayrıca, sürekli bağlantı ve çoklu istek gönderiminde performans ve verimlilik açısından da avantaj sağlar. Konuyu detaylandırmak gerekirse, iki temel noktadan bahsedebiliriz: Keep-Alive bağlantısı ile sürekli bağlantı kurmak ve toplu (batch) istekler göndermek.

İlk olarak, Keep-Alive özelliği, TCP bağlantısının isteğe bağlı olarak açık kalmasını sağlar. Bu sayede, her yeni istek için yeni bağlantı kurulmaz; bu, özellikle yüksek sayıda istek gönderen scriptlerde gecikmeyi azaltır. Axios'ta bunu sağlamak için, http.Agent veya https.Agent kullanılır ve keepAlive: true parametresi set edilir.

İkinci olarak, toplu istekler (batch request) kavramı, birden fazla API çağrısını tek bir işlemde göndermeyi sağlar. Bu, örneğin birden fazla sunucu durumu kontrolü veya yapılandırma güncellemesi sırasında zaman kazanır. Bunun için, Promise'leri uygun şekilde dizip Promise.all() veya async/await yapısıyla paralel hale getirilebilir.

Örnek olarak, aşağıdaki kodda, Axios ve Node.js kullanılarak Keep-Alive etkinleştirilmiş ve toplu istekler yapılmıştır:

CODE
12345678910111213141516171819202122232425262728293031
const axios = require('axios');
const http = require('http');

const agent = new http.Agent({ keepAlive: true });

const axiosInstance = axios.create({
  httpAgent: agent,
  timeout: 5000, // isteğe bağlı zaman aşımı
});

// Toplu API istekleri
async function batchRequests(requests) {
  try {
    const responses = await Promise.all(requests.map(req => axiosInstance(req)));
    responses.forEach(res => {
      console.log(res.data);
    });
  } catch (error) {
    console.error('Hata oluştu:', error);
  }
}

// Kullanım örneği
const requests = [
  { method: 'GET', url: 'http://sunucu1/api/status' },
  { method: 'GET', url: 'http://sunucu2/api/status' },
  { method: 'POST', url: 'http://sunucu3/api/guncelle', data: { param: 'deger' } },
];

batchRequests(requests);


Bu yapı, hem bağlantıyı sürekli açık tutar hem de aynı anda birden fazla isteği paralel şekilde gönderir. Ayrıca, Node.js ile çalışan PM2 gibi süreç yöneticileriyle bu script sürekli çalıştırılabilir ve otomatikleştirilebilir.

Sunucu yönetiminde bu tarz otomasyonlar, zaman ve kaynak tasarrufu sağlar, hata oranını azaltır ve operasyonların tutarlılığını artırır. Bu nedenle, Axios'un bu özellikleri etkin biçimde kullanmak, sistem performansını optimize etmek açısından kritik öneme sahiptir.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi