Goroutine Timeout
تستخدم الوظيفة المتوفرة، Find()، goroutine لإنشاء سلسلة من طلبات HTTP والتعامل مع استجاباتها. ومع ذلك، فإن القلق هو أن هذه الطلبات تستمر في الخلفية حتى إذا تجاوزت المهلة المحددة.
تسرب محتمل للغوروتين
من غير المحتمل أن يكون هناك تسرب للغوروتين في الكود. عندما ترجع وظيفة Find () مهلة، يستمر الإجراء الرئيسي ويتم التخلي عن الإجراء الأساسي في الخلفية.
إلغاء طلب HTTP
لتجنب تقديم الطلبات بعد انتهاء المهلة الحل هو استخدام context.Context لكل طلب HTTP. يسمح لك السياق بإلغاء الطلب في حالة انتهاء المهلة.func Find() (interface{}, bool) {
ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)
defer cancel()
ch := make(chan Response, 1)
go func() {
data, status := findCicCode()
ch عند انتهاء المهلة، سيؤدي استدعاء Cancel () إلى إلغاء جميع طلبات HTTP التي تم إنشاؤها داخل ctx. وهذا يمنع أي معالجة إضافية أو استهلاك الموارد من خلال تلك الطلبات.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3