في ملتوية بيثون - تأكد من أن يمكن deallocated مثيل بروتوكول تماما

StackOverflow https://stackoverflow.com/questions/1234292

سؤال

ولدي الخادم مأخذ دردشة مكثفة جدا مكتوبة في بيثون ملتوية، وأبدأ باستخدام internet.TCPServer مع مصنع وأن المراجع مصنع لكائن بروتوكول الذي يعالج جميع الاتصالات مع العميل.

وكيف أتأكد من مثيل بروتوكول يدمر تماما نفسه مرة واحدة وقد قطع عميل؟

ولقد حصلت على وظيفة اسمه connectionLost التي أطلقت مرة واحدة في قطع اتصال العميل وأحاول التوقف عن النشاط هناك حق ولكن أظن بعض الاشياء مفاعل (مثل twisted.words الحالات) الحفاظ على تشغيل لحالات بروتوكول عفا عليها الزمن.

وماذا سيكون أفضل نهج للتعامل مع هذا؟

وشكرا!

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

المحلول

حسنا، لحلحلة هذه القضية أكون قد وضعت طريقة __del__ في فئة البروتوكول وأنا الآن تسجيل حالات البروتوكول التي لم يتم تجميع البيانات المهملة في حدود 1 دقيقة من الوقت قد قطع العميل.

وإذا كان أي شخص لديه أي حل أفضل أنا لا تزال نكون سعداء لنسمع عن ذلك، ولكن حتى الآن أنا ثابتة بالفعل عدد قليل من تسرب الذاكرة المحتملة باستخدام هذا السجل.

وشكرا!

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