المهلات وإعادة المحاولة
الدرس 45 من 47 في دورة التعامل مع الشبكات عبر الطرفية على Coddy.
افتراضيًا، ينتظر curl وقتًا طويلًا جدًا. في أحد البرامج النصية، يُعدّ ذلك خطأً: مضيف واحد يتعذر الوصول إليه، وتظل مهمتك معلّقة حتى يلاحظها أحد.
curl -s --max-time 5 --connect-timeout 2 URLيحدّد --connect-timeout المدة التي يُسمح بإنفاقها لمحاولة الاتصال. ويحدّد --max-time مدة العملية بأكملها. يؤدي تجاوز أيٍّ منهما إلى رمز خروج 28.
تحتاج إعادة المحاولة إلى عناية أكبر مما يبدو. إن تكرار طلب GET أو PUT فآمن، لأن كليهما متوافق مع خاصية عدم التكرار. أما تكرار طلب POST فقد ينشئ سجلًا ثانيًا، وتكون المهلة المستنفدة أسوأ حالة له: فأنت لا تعرف أبدًا ما إذا كانت العملية الأولى قد عولجت.
لذلك أعد محاولة عمليات القراءة بحرية، وفكّر قبل إعادة محاولة عمليات الكتابة. وعندما تضطر إلى ذلك، اطلب من الخادم طريقة لجعلها آمنة، مثل مفتاح عدم التكرار.
التحدي
متوسطضع حدًا زمنيًا لطلب لن تتم الإجابة عنه مطلقًا.
اطلب http://10.255.255.1/، وهو عنوان يبتلع حركة المرور بصمت، واستسلم بعد ثانيتين، واطبع gave up: متبوعًا برمز خروج curl.
الناتج المتوقع:
gave up: 28من دون مهلة زمنية، سيظل هذا الطلب معلّقًا لأكثر من دقيقة بكثير.
جرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعامل مع الشبكات عبر الطرفية
6التعمق في curl
عرض الترويساتحفظ الاستجاباتترويسات مخصصةالحالة والتوقيترموز خروج curlمراجعة: خيارات curl9المصادقة وتصحيح الأخطاء
مفاتيح API وBearerوكيل المستخدمالمهلات وإعادة المحاولةقراءة الفشلمراجعة: تصحيح الأخطاءتدرّب بنفسك: Playground لـ Terminal