Modül Kuyruğu
Modüllerin arka planda yaptığı işleri izleyen, yeniden deneyen ve temizleyen dokuz uç.
Genel Bakış
Bir hizmet kurulurken, askıya alınırken ya da iptal edilirken modülün sağlayıcıyla konuşması gerekir. Bu konuşma isteği bekletmemek için kuyruğa alınır ve arka planda çalışır. Bu dokuz uç o kuyruğu izler ve müdahale eder.
Bir iş belirli sayıda denenir; o sayıya ulaşınca düşer ve kendiliğinden bir daha denenmez. Düşmüş bir işi tekrar sıraya almak ya da beklemeden çalıştırmak buradaki uçların işidir.
Referans
Kuyruğu Listeleme
Modüllere verilmiş ve arka planda çalışacak işleri döndürür.
pending sırada, processing çalışıyor, completed bitti, failed düştü.curl -G 'https://panel.ornek.com/api/v1/admin/tools/module-queue' \
-H "Authorization: Bearer $API_KEY" \
-d status=failedconst url = new URL('https://panel.ornek.com/api/v1/admin/tools/module-queue');
url.searchParams.set('status', 'failed');
const res = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();$url = 'https://panel.ornek.com/api/v1/admin/tools/module-queue?' . http_build_query(['status' => 'failed']);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Liste kayitlari TASIMAZ: bir isin neden dustugunu gormek icin detayini okuyun.
$failed = Api::Tools()->GetModuleQueue([], ['status' => 'failed'])['data'];Kuyruk Sayaçları
Kuyruktaki işlerin durum bazında sayısını döndürür.
curl 'https://panel.ornek.com/api/v1/admin/tools/module-queue/stats' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/module-queue/stats', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/module-queue/stats');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Izleme icin en ucuz uc budur: tum listeyi cekmeden kuyrugun saglıgini verir.
$stats = Api::Tools()->GetModuleQueueStats()['data'];
$stuck = $stats['failed'] > 0 || $stats['pending'] > 100;Öğe Detayı
Tek bir işi, sağlayıcıyla yapılan görüşmelerin kaydıyla birlikte döndürür.
pending sırada, processing çalışıyor, completed bitti, failed düştü.curl 'https://panel.ornek.com/api/v1/admin/tools/module-queue/101' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/module-queue/101', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/module-queue/101');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Yeniden denemeden ONCE kayitlari okuyun: ayni kosul surerse is ayni yerde duser.
$item = Api::Tools()->GetModuleQueueItem(['id' => 101])['data'];
$last = end($item['api_logs']);Öğeyi Yeniden Deneme
Düşmüş bir işi tekrar sıraya alır ve deneme sayacını sıfırlar.
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/module-queue/101/retry' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/module-queue/101/retry', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/module-queue/101/retry');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Yeniden deneme isi HEMEN calistirmaz: siraya alir, arka plan gorevi devrali r.
// Beklemeden gormek istiyorsaniz calistirma ucunu kullanin.
Api::Tools()->RetryModuleQueueItem(['id' => 101]);Öğeyi Hemen Çalıştırma
İşi arka planı beklemeden o anda çalıştırır ve sonucunu döndürür.
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/module-queue/101/run' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/module-queue/101/run', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/module-queue/101/run');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Is DUSSE bile istek 200 doner: basari 'task_success' alanindadir.
$result = Api::Tools()->RunModuleQueueItem(['id' => 101])['data'];
if (!$result['task_success']) {
$why = $result['task_message'];
}{
"data": {
"task_success": false,
"task_message": "Provider refused: quota exceeded.",
"item": {
"id": 101,
"status": "failed",
"attempts": 3,
"max_attempts": 3
}
}
}Öğeyi Silme
Bir işi kuyruktan çıkarır. İş yapılmamış olarak kalır.
gate:module.queue_intervene kancası işlemi veto etti.curl -X DELETE 'https://panel.ornek.com/api/v1/admin/tools/module-queue/101' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/module-queue/101', {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/module-queue/101');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Silmek isi IPTAL eder: hizmet kurulmayi bekliyorsa beklemeye devam eder.
Api::Tools()->DeleteModuleQueueItem(['id' => 101]);Toplu Silme
Birden çok işi kuyruktan çıkarır.
gate:module.queue_intervene kancası işlemi veto etti.curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/module-queue/bulk-delete' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"ids":[101,102,103]}'const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/module-queue/bulk-delete', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ ids: [101, 102, 103] }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/module-queue/bulk-delete');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['ids' => [101, 102, 103]]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kimlik listesi gonderdiginiz gibi doner: artik var olmayanlar da elenmez, geri gelir.
$response = Api::Tools()->BulkDeleteModuleQueue(['ids' => [101, 102, 103]]);
$echoed = $response['data']['ids'];Tüm Düşenleri Yeniden Deneme
Kuyruktaki bütün düşmüş işleri tekrar sıraya alır.
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/module-queue/retry-all-failed' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/module-queue/retry-all-failed', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/module-queue/retry-all-failed');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kac isin siraya alindigini bu uc soylemez; oncesi ve sonrasi sayaclarla olculur.
$before = Api::Tools()->GetModuleQueueStats()['data']['failed'];
Api::Tools()->RetryAllFailedModuleQueue();
$after = Api::Tools()->GetModuleQueueStats()['data']['failed'];Tamamlananları Temizleme
Tamamlanmış işleri kuyruktan siler.
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/module-queue/clear-completed' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/module-queue/clear-completed', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/module-queue/clear-completed');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Temizlik TAMAMLANANLARI alir; dusmus isler yerinde kalir ve incelenmeyi bekler.
Api::Tools()->ClearCompletedModuleQueue();Tuzaklar
Hemen çalıştırma ucu, iş düşse bile 200 döndürür; başarı bilgisi yanıttaki alandadır. Yalnız durum koduna bakan bir istemci başarısız bir kurulumu başarılı sayar. Hata mesajı da aynı yanıtta gelir.
Yeniden deneme işi sıraya alır: deneme sayacı sıfırlanır ve arka plan görevi sırası geldiğinde çalıştırır. Çalıştırma ucu ise işi o anda yapar ve sonucu döndürür. Sonucu görmek istiyorsanız ikincisini kullanın.
Bir kuyruk öğesini silmek yalnız kaydı temizlemez: o iş hiç yapılmaz. Kurulmayı bekleyen bir hizmet beklemeye devam eder ve bunu size kimse hatırlatmaz. Bu yüzden silme bir kancayla korunur; kurulumunuz o kancayı kullanıyorsa istek reddedilebilir.
Sağlayıcıyla yapılan görüşmelerin kaydı ağır olduğu için listeden çıkarılır; yalnız tek öğe detayında gelir. Bir işi yeniden denemeden önce o kaydı okuyun, çünkü aynı koşul sürüyorsa iş aynı yerde yine düşer.
Tüm düşenleri yeniden deneme ve tamamlananları temizleme uçları yalnız çalıştıklarını söyler; kaç işe dokunduklarını bildirmez. Etkiyi ölçmek istiyorsanız öncesinde ve sonrasında sayaçları okuyun.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.