الأدلة

إعادة محاولة استعلام فاشل بالطريقة الصحيحة

إعادة المحاولة التلقائية هي الخطوة الصحيحة لبعض الأخطاء وإهدار لطلب في أخطاء أخرى. والخطأ في ذلك إما يُغرق نقطة نهاية متعثرة، أو يتخلى عن استعلام كان سينجح بعد ثانية.

أخطاء تستحق إعادة المحاولة

الاستجابة 503 تعني أن الخدمة غير متاحة مؤقتًا، وهذا بالضبط نوع الحالة العابرة التي صُممت لها إعادة المحاولة بعد تأخير قصير. وانتهاء مهلة الشبكة من جهتك، حين لا تتلقى أي استجابة على الإطلاق، يندرج في الفئة نفسها، لأن الطلب ربما عولج وربما لم يُعالج.

HTTP/1.1 503 Service Unavailable

{
  "status": "error",
  "error": {"code": "service_unavailable", "message": "Temporarily unavailable, try again shortly"}
}

أخطاء لا تستحق إعادة المحاولة

الاستجابة 400 تعني أن الطلب نفسه كان غير سليم الصياغة، مثل غياب معامل مطلوب أو إحداثيات خارج النطاق. والاستجابة 401 تعني أن المصادقة فشلت. وإعادة محاولة أي منهما دون إصلاح المشكلة الأساسية لا تنتج سوى الخطأ نفسه مجددًا، وكل محاولة لا تزال تُحتسب كطلب في معظم الحالات، لذلك فإن حلقة إعادة المحاولة على طلب سيئ قد تستنزف حصتك دون فائدة.

التراجع التدريجي بين المحاولات

التأخير القصير الثابت مناسب لاستعلام تفاعلي واحد، لكن المهمة الدفعية التي تعيد محاولة عناصر فاشلة كثيرة يجب أن تتراجع تدريجيًا، بمضاعفة فترة الانتظار بين المحاولات حتى سقف معقول، حتى لا يتحول انقطاع قصير إلى سيل من إعادة المحاولات لحظة استئناف الخدمة.

429 حالة قائمة بذاتها

الاستجابة 429 ليست في الحقيقة فشلًا يستدعي إعادة المحاولة بقدر ما هي إشارة إلى التوقف مؤقتًا. اقرأ ترويسة X-Quota-Reset وانتظر حتى ذلك الموعد بدلًا من إعادة المحاولة بعد تأخير قصير ثابت، لأن إعادة المحاولة قبل إعادة الضبط لن تنتج سوى 429 نفسها مرة بعد مرة.

مراعاة تكلفة الطلبات

كل محاولة إعادة تصل إلى الخادم، ناجحة كانت أم لا، هي طلب. واستراتيجية إعادة المحاولة التي تحترم الفرق بين الأخطاء العابرة والدائمة تُبقي حصتك اليومية ورصيدك مسبق الدفع مُنفقين على عمل حقيقي بدلًا من إخفاقات متكررة.

التمييز بين "حاول مجددًا" و"أصلح هذا أولًا" هو معظم ما تتلخص فيه استراتيجية إعادة المحاولة الجيدة. وتسرد صفحة الأخطاء كل رمز خطأ تعيده الواجهة وما يؤدي إلى كل منها.