التسجيل باستخدام المعالجة المتعددة في بايثون: حل قوي
عند استخدام وحدة المعالجة المتعددة في بايثون، يصبح التسجيل أكثر تعقيدًا بسبب نقص المعالجة- الأقفال المشتركة للمسجل المدرك للمعالجة المتعددة، مما قد يؤدي إلى إخراج sys.stderr مشوش.
لمواجهة هذا التحدي، هناك طريقة بديلة تتمثل في إنشاء معالج سجل مخصص يوجه الإخراج إلى العملية الأصلية عبر أنبوب. تعتمد هذه الطريقة على قائمة انتظار للتعامل مع التزامن والتعافي من الأخطاء. يضمن التنفيذ المقدم تسجيلًا مستقرًا في بيئات الإنتاج.
يقوم المعالج المخصص، MultiProcessingLog، بتوسيع فئة logging.Handler والاستفادة من RotatingFileHandler للتعامل مع التسجيل المستند إلى الملف. يقوم بإنشاء أنبوب بين العمليات الأصل والطفل، مما يسمح بتخزين سجل مركزي.
تفاصيل التنفيذ:
يستخدم معالج MultiProcessingLog مؤشر ترابط منفصل لتلقي سجلات السجل من العمليات الفرعية وإعادة توجيهها إلى RotatingFileHandler في العملية الأصلية. يضمن هذا أن يتم تنسيق رسائل السجل بشكل صحيح وكتابتها إلى الوجهة المقصودة.لإرسال سجلات السجل، يتم استخدام طريقة الإرسال، بينما يقوم مؤشر ترابط الاستلام بمراقبة الأنبوب بشكل مستمر بحثًا عن السجلات الجديدة وإعادة توجيهها إلى _handler. لتقليل خطر الكائنات غير القابلة للالتقاط التي تسبب مشكلات، يقوم المعالج بتقييد قيم exc_info وargs في سجل السجل قبل إرسالها عبر الأنبوب.تم تجاوز طريقة الإرسال لتغليف استدعاء _format_record في كتلة محاولة باستثناء التأكد من معالجة أي فشل بشكل مناسب.
يوفر معالج التسجيل المخصص هذا حلاً موثوقًا لإدارة السجلات في تطبيقات المعالجة المتعددة، ويقدم تخزينًا مركزيًا للسجل وإمكانات استرداد الأخطاء.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3