פסקי זמן לחיבור ולקריאה מגבילים המתנות מסוימות. הם אינם בהכרח מגבילים פעולה שלמה דרך פרוקסי, שעשויה לכלול גם המתנה בתור, DNS, CONNECT, TLS, הפניות מחדש, ניסיונות חוזרים וצריכת התגובה.

מגבלההיקף
פסק זמן לחיבורהקמת החיבור לפי הגדרת הלקוח
פסק זמן לחוסר פעילות בקריאההמתנה בלי התקדמות הנתונים הצפויה
מועד סופי כוללהמשך הזמן המותר של הפעולה השלמה

התחילו בתקציב הזמן של הפעולה

השתמשו במועד הסופי הכולל המתועד של הלקוח או במנגנון הביטול כאשר הוא קיים, לצד מגבלות השלבים. HTTPX מפריד בין המתנות של מאגר, חיבור, קריאה וכתיבה. Requests מציין שפסק הזמן שלו אינו מגבלה של הורדה שלמה. curl מספק פסק זמן כולל להעברה.

לדוגמה, מטלה של עשרים שניות מבלה שתי שניות בתור, שלוש בהקמת המסלול שלה ושש בחילוף שלא הצליח. לניסיון הבא שלה נותרות כעשר שניות בקירוב. מתן עשרים שניות חדשות לכל ניסיון חוזר היה משליך את התקציב המקורי.

השתמשו בשעון מונוטוני לחישוב הזמן שחלף. העבירו מועד סופי מוחלט או משך זמן שנותר דרך השכבות שבעלות העבודה. אם מנגנון הביטול שמסביב אינו יכול לאכוף את ההיקף הנדרש, הצהירו על המגבלה הזו במפורש.

כללו את הגוף ואת הניקוי

שיטה שחוזרת לאחר הכותרות עלולה להשאיר את קריאת הגוף מחוץ למועד שלה. החליטו אם התקציב מכסה את ההקמה, הורדה סופית שלמה או זרם ארוך עם כללי חיים נפרדים. דוגמה מודרנית ב-.NET לביטול כותרות וגוף נושאת אסימון אחד דרך שני השלבים.

השאירו זמן לסגירת תגובות ולהשלמת הביטול לפני שניסיון נוסף יתפוס קיבולת של המאגר. תעדו את השלב שנכשל ואת הזמן שחלף; קריאות חוזרות שמתקדמות עשויות לספק את מגבלות חוסר הפעילות בזמן שהמטלה הכוללת נמשכת יותר מדי.

המועד הסופי של שער כלפי המעלה שייך לאותו שער. לאחר שהוא מחזיר 504, תקציב לקוח שלא נוצל אינו יכול להאריך את הניסיון שהושלם. החזיקו כל טיימר צמוד לבעליו כשאתם מחליטים איזו הגדרה יש לתקן.

מאמרים קשורים