Django / الصحة ودليل الإنتاج / الدرس 18
الرصد والجاهزية التشغيلية
اربط السجلات الآمنة والصحة والإصدار والاستعادة دون اعتبار فحص واحد إثباتا للخدمة كلها.
في هذه الصفحة
أهداف الدرس
- رصد الطلب دون أسراره
- تسجيل حدث منظم صغير بأمان
- للإصدار والاستعادة دليل مستقل
رصد الطلب دون أسراره
يربط الرصد الطلب بالنتيجة والزمن والاعتماد والفشل، ويساعد المعرف دون السجل الكامل. اختر المستوى وتجنب التكرار بكل طبقة، وأبعد الأسرار والرموز وروابط الاسترداد. يوجه الإعداد الدليل وتبقى صلاحية التخزين والحفظ والحجب مطلوبة. يفيد التتبع الخاص ولا يلائم الرد العام. ويجب أن يوضح مستوى السجل أهمية الحدث التشغيلية، لا أن يتحول كل حدث إلى خطأ، كما ينبغي تجنب تكرار الاستثناء نفسه في كل طبقة.
فصل الحياة والجاهزية وصحة العمل
يثبت رد بسيط حياة ضيقة، وتسأل الجاهزية قبول الحمل والصحة ثوابت أعمق. لا تثقل المسبار بكتابة وفحوص غير محدودة، ولا تحول عطل اعتماد مؤقت لعاصفة إعادة. حدد مستهلك الإشارة والفعل. لا تثبت 200 بلا فحص المصادقة والقاعدة والدفع والنسخ وكل مسار. وقد يؤدي ربط فشل اعتماد مشترك بإعادة تشغيل كل العمال إلى إزالة سعة سليمة وإضافة حمل اتصالات، لذلك يجب أن تكون الاستجابة للإشارة محددة.
تسجيل حدث منظم صغير بأمان
يسجل البرنامج حدثا مصطنعا بالذاكرة ومعرفا ويمنع انتشاره وينظف المعالج، دون سجل مشروع وتسرب. السطر ثابت. يضيف الإنتاج توقيتا واتفاقات مراجعة لا كل السياق، وقد يفشل السجل أو يكلف فيحتاج حدودا وضغطا. يثبت الوصول لنقطة لا اكتمال أثر بعيد مستقلا. وقد يكون وصول الشفرة إلى سطر السجل صحيحا بينما لم يكتمل الأثر البعيد، ولهذا يجب ألا يبالغ وصف الحدث في معنى ما جرى التحقق منه.
from django.conf import settings
settings.configure(
SECRET_KEY="synthetic-course-key",
USE_I18N=False, USE_TZ=True,
INSTALLED_APPS=[],
DATABASES={"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": ":memory:"}},
DEFAULT_AUTO_FIELD="django.db.models.AutoField",
ALLOWED_HOSTS=["testserver"],
)
import django
django.setup()
import io
import logging
stream = io.StringIO()
logger = logging.getLogger("course.local.fixture")
logger.setLevel(logging.INFO)
logger.propagate = False
handler = logging.StreamHandler(stream)
handler.setFormatter(logging.Formatter("%(levelname)s %(message)s request=%(request_id)s"))
logger.addHandler(handler)
try:
logger.info("request complete", extra={"request_id": "lab-7"})
print(stream.getvalue().strip())
finally:
logger.removeHandler(handler)
handler.close()
INFO request complete request=lab-7
يسجل حدثا مصطنعا بالذاكرة وينظف معالجه دون مجمع أو سجل تطبيق.
صدق العينة بشأن نطاق الحياة
يعيد الثاني JSON صغيرة ويفحصها محليا فيثبت العرض فقط لا خادما وقاعدة وتوجيها وجاهزية. يحتاج المسبار الحقيقي دليلا محدودا مختارا وعقد منسق، واحم التشخيص المفصل. لا تعرض إعدادا وأسرارا وعناوين وأخطاء خاما للعامة لمجرد سهولة التشغيل. ويجب أن تبقى نقاط التشخيص المفصلة خلف الإذن المناسب، لأن سهولة قراءة إعدادات وعناوين داخلية ليست مبررا لإرسالها ضمن فحص صحة عام.
from django.conf import settings
settings.configure(
SECRET_KEY="synthetic-course-key",
USE_I18N=False, USE_TZ=True,
INSTALLED_APPS=[],
DATABASES={"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": ":memory:"}},
DEFAULT_AUTO_FIELD="django.db.models.AutoField",
ALLOWED_HOSTS=["testserver"],
)
import django
django.setup()
import json
from django.http import JsonResponse
from django.test import RequestFactory
def live(request):
return JsonResponse({"status": "ok"})
response = live(RequestFactory().get("/live/"))
print(response.status_code, json.loads(response.content)["status"])
200 ok
لا يفحص العرض اعتمادا ولا يوصف نجاحه جاهزية قاعدة ونشر.
للإصدار والاستعادة دليل مستقل
اربط الأثر المختبر والإصدارات والإعداد والمخطط والأصول وحد التراجع. لا تعوض فحوص الإطار الاستعادة وتجربة التطبيق. خطط إيقاف القبول وإنهاء المهام والموارد ضمن المهلة. يجب أن تستعاد النسخ بالمحرك والمفاتيح الفعلية لا أسماء حديثة. سجل المعروف والمجهول والتغيير المراجع التالي، ولا ينفذ المقرر نشرا إنتاجيا. كما أن ملف نسخة احتياطية حديثا لا يثبت إمكان استعادته؛ تحتاج المطالبة بالاستعادة تجربة تشمل المحرك والمفاتيح والتخزين والمدة والمتطلبات الفعلية.
الأخطاء الشائعة وإصلاحها
يكشف الخطأ العام أسرارا
- لماذا يحدث؟
- عُرض التشخيص دون حجب.
- كيف تصلحه؟
- افصل العميل والخاص.
- كيف تتجنب تكراره؟
- راجع الحقول الحساسة.
يعد فحص الصحة جاهزية كاملة
- لماذا يحدث؟
- ضخم شرطه الضيق.
- كيف تصلحه؟
- حدد الإشارة وتفسيرها.
- كيف تتجنب تكراره؟
- اختبر أفعال المستهلك.
تعد نسخة حديثة قابلة للاستعادة
- لماذا يحدث؟
- لم تختبر استعادة متوافقة.
- كيف تصلحه؟
- احفظ تجربة ودليلا.
- كيف تتجنب تكراره؟
- قس الاستعادة بالترتيب الفعلي.
اختبر فهمك
1. ماذا يحقق معرف الارتباط دون حمل أسرار؟
اعرض الحل المشروح
يربط أحداث الطلب بمعرف آمن دون الاعتمادات والحمولات. تحقق من المرسل وحد طوله وتنسيقه قبل إدراجه.
2. لماذا تسوء الأزمة بإعادة الجميع لمهلة اعتماد؟
اعرض الحل المشروح
قد يزيل سعة سليمة ويضخم الاتصال ويكرر الإعادة مع بقاء الاعتماد. ميز الحياة والجاهزية وصنف التعافي بحد ودليل، لا كل مهلة تلف عملية.
أهم ما تعلمته
- للإشارات نطاق موثق.
- اجعل التشخيص مفيدا محدودا.
- تحتاج ادعاءات الاستعادة دليلا.