חבילת ה-Go Context

רוב מפתחי ה-Go משתמשים ב-context.Context מבלי להבין אותו. רואים אותו ב-HTTP handlers, בקריאות למסד נתונים ובמתודות SDK. מתחילים רבים מעבירים את context.Background() בכל מקום.

הטעות הזו גורמת לבעיות. פונקציית Lambda עלולה להיתקע מעבר ל-timeout שלה. שאילתת מסד נתונים עלולה להמשיך לרוץ גם לאחר שהמשתמש התנתק.

ה-Context מאפשר לכם לשלוח אותות ביטול (cancellation signals) ודדליינים (deadlines) דרך הקוד שלכם. הוא עוזר לכם לענות על שלוש שאלות:

• האם הפעולה הזו צריכה להמשיך לרוץ? • מתי הפעולה הזו חייבת להסתיים? • אילו נתוני בקשה זורמים יחד עם הקריאה הזו?

לממשק (interface) ה-Context יש ארבע מתודות:

ה-Context עובד כעץ. מתחילים עם context אב ויוצרים לו צאצאים (children).

Contexts שורשיים (Root Contexts):

Contexts צאצאים (Child Contexts):

כלל קריטי: תמיד קראו לפונקציית ה-cancel. השתמשו ב-defer cancel() מיד לאחר