System.CalloutException: Read timed out

ליאור נכתב על ידי ליאור לביא, עודכן בתאריך 08/01/2024

הודעת השגיאה

System.CalloutException: Read timed out

למה אנחנו רואים את הודעת השגיאה הזאת?

לעיתים כשנבצע קריאה לשירות חיצוני באמצעות HTTP request נקבל את הודעת השגיאה Read Timed Out. הסיבה להודעה זאת היא שהשירות אליו פנינו לא החזיר תגובה בתוך מסגרת הזמן שמוגדרת ב-Salesforce כברירת מחדל עבור פעילות זאת. מסגרת הזמן ש-Salesforce מגדירה כברירת מחדל עבור מענה משירות חיצוני היא 10 שניות, או 10,000 מילישניות.

פתרון

על מנת להאריך את זמן התגובה של הקריאה שלנו מעבר ל-10 שניות, נוכל להשתמש במתודה setTimeout() מהמחלקה HttpRequest באופן הבא:

HttpRequest req = new HttpRequest();
req.setTimeout(20000); // 20,000 milliseconds = 20 seconds

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

שים לב! Salesforce מגבילה את סך כל זמן ההמתנה לתגובות משירותים חיצוניים בטרנסאקציה לשתי דקות, או 120,000 מילישניות, מה שאומר שעלינו לשים לב שסך כל ה-Callouts שאנחנו מבצעים באותה הטרנסאקציה לא מחכות ביחד יותר משתי דקות לתגובות.

לקריאה נוספת