في ملتوية بيثون - تأكد من أن يمكن deallocated مثيل بروتوكول تماما
-
22-07-2019 - |
سؤال
ولدي الخادم مأخذ دردشة مكثفة جدا مكتوبة في بيثون ملتوية، وأبدأ باستخدام internet.TCPServer مع مصنع وأن المراجع مصنع لكائن بروتوكول الذي يعالج جميع الاتصالات مع العميل.
وكيف أتأكد من مثيل بروتوكول يدمر تماما نفسه مرة واحدة وقد قطع عميل؟
ولقد حصلت على وظيفة اسمه connectionLost التي أطلقت مرة واحدة في قطع اتصال العميل وأحاول التوقف عن النشاط هناك حق ولكن أظن بعض الاشياء مفاعل (مثل twisted.words الحالات) الحفاظ على تشغيل لحالات بروتوكول عفا عليها الزمن.
وماذا سيكون أفضل نهج للتعامل مع هذا؟
وشكرا!
المحلول
حسنا، لحلحلة هذه القضية أكون قد وضعت طريقة __del__
في فئة البروتوكول وأنا الآن تسجيل حالات البروتوكول التي لم يتم تجميع البيانات المهملة في حدود 1 دقيقة من الوقت قد قطع العميل.
وإذا كان أي شخص لديه أي حل أفضل أنا لا تزال نكون سعداء لنسمع عن ذلك، ولكن حتى الآن أنا ثابتة بالفعل عدد قليل من تسرب الذاكرة المحتملة باستخدام هذا السجل.
وشكرا!