0Pricing
MCP Academy · درس

الإيقاف النظيف وتحرير الموارد

أغلقوا مجموعات الاتصالات والملفات عند توقف الخادم.

الإيقاف النظيف وتحرير الموارد درس مجاني في MCP Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في MCP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة MCP Academy 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

Why Shutdown Matters

Open connections that are never closed leak resources: sockets pile up, pools stay reserved, and databases stay busy.

Teardown Lives After Yield

Everything after yield in your lifespan is shutdown code, running when the server is told to stop.

async def lifespan(server):
    db = await connect()
    yield {"db": db}
    await db.close()

Close What You Opened

The golden rule: for every resource you opened in startup, add a matching close in teardown so nothing is left dangling.

try / finally Guarantees It

Wrap the yield in try / finally so cleanup still runs even if a request crashes mid-flight.

async def lifespan(server):
    db = await connect()
    try:
        yield {"db": db}
    finally:
        await db.close()

Drain In-Flight Work

A graceful stop lets in-flight tool calls finish before tearing down, instead of yanking the rug out from under them.

Flush Before You Close

Some clients buffer data, so flush pending writes before closing to avoid losing the last bytes you sent.

Close in Reverse Order

Tear things down in reverse of how you built them, so a thing is never closed while something depending on it is alive.

Don't Hang on Exit

Guard slow cleanup with a timeout so a stuck connection cannot block your whole server from ever shutting down.

Idempotent Cleanup

Make teardown idempotent: closing something twice should be harmless, since shutdown can be triggered more than once.

Log the Shutdown Path

A short log line per closed resource turns a silent exit into something you can actually debug when things go wrong.

Context Managers Do It For You

Wrapping clients in async with auto-closes them, letting Python handle release so you write less manual cleanup.

async def lifespan(server):
    async with connect() as db:
        yield {"db": db}

Quick Check

Where does a lifespan put code that releases resources?

Recap: Clean Shutdown

You release resources after yield, guard it with try/finally, close in reverse, and avoid hangs. Your server now boots and stops cleanly. ✅

الأسئلة الشائعة

هل درس «الإيقاف النظيف وتحرير الموارد» مجاني؟

نعم — نص درس «الإيقاف النظيف وتحرير الموارد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة MCP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة MCP Academy 4 دروس في المجموع.

ماذا ستتعلم في «الإيقاف النظيف وتحرير الموارد»؟

أغلقوا مجموعات الاتصالات والملفات عند توقف الخادم. تتمرن على MCP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ MCP Academy؟

لا تُشترط خبرة سابقة. MCP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «الإيقاف النظيف وتحرير الموارد»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس MCP Academy هذا؟

نعم. كل درس في MCP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. خطاف بدء التشغيل لدورة الحياة
  2. مشاركة الحالة عبر سياق التطبيق
  3. الوصول إلى كائن السياق
  4. الإيقاف النظيف وتحرير الموارد
← العودة إلى MCP Academy