سؤال

لقد ورثت صيانة بعض الحوسبة العلمية باستخدام ثعبان متوازي على كتلة. مع Python المتوازي ، يتم تقديم الوظائف إلى ppserver ، والتي (في هذه الحالة) تتحدث إلى عمليات ppserver التي تديرها بالفعل على أجهزة الكمبيوتر الأخرى ، وتخليص مهام PPWorkers.

أرغب في استخدام وحدة تسجيل المكتبة القياسية لتسجيل الأخطاء وتصحيح المعلومات من الوظائف التي يتم إرسالها إلى ppserver. نظرًا لأن هؤلاء PPWorkers يعملون كعمليات منفصلة (على أجهزة كمبيوتر منفصلة) ، لست متأكدًا من كيفية تنظيم التسجيل بشكل صحيح. هل يجب أن أسجل إلى ملف منفصل لكل عملية؟ ربما هناك معالج سجل يجعل كل شيء أفضل؟

أيضًا ، أريد تقارير حول العملية التي تسببت في الكمبيوتر الذي ضرب خطأً ، لكن الرمز الذي أكتبه على الأرجح لا يدرك هذه الأشياء ؛ ربما يجب أن يحدث ذلك على مستوى PPServer؟

(نسخة من السؤال المتقاطع في منتديات Python المتوازية ، سأقوم بنشر إجابة هنا إذا حصلت على شيء هناك من هذا من غير مستخدم)

هل كانت مفيدة؟

المحلول

طريقة واحدة لحل مشكلتك هي القيام بما يلي:

  1. في كل عملية عامل ، استخدم أ logging.handlers.SocketHandler لإرسال الأحداث من العامل إلى عملية مسجل مخصصة.
  2. قم بإنشاء عملية مسجل مخصصة تستمع لتسجيل الأحداث على مقبس ، استنادًا إلى مثال العمل الوارد في المستندات في https://docs.python.org/3/howto/logging-cookbook.html#sending-and-receiving-logging-events-across-a-network
  3. ربح ؛-)

إذا قمت بالاستثناءات في وظائف العمال وتسجيلها ، فيجب أن تكون قادرًا على الحصول على رؤية للأخطاء في جميع العمال في مكان واحد.

نصائح أخرى

سأستخدم بيثون logging و socket واجهات برمجة التطبيقات. فقط اتبع المثال هنا.

ببساطة ابدأ ppworker مكرس لتسجيل مكان ما ، وإنشاء جديد logging.Logger في كل من العمال الآخرين مع أ logging.SocketHandler تحديد اسم المضيف ومنفذ الجهاز الذي يشغل التسجيل ppworker.

إذا كان لديك خادم syslog يعمل ، فيمكنك أيضًا استخدام Python's syslog الوحدة التي تم توثيقها هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top