إعطاء تطبيق Python واجهة ويب لمراقبه ، باستخدام Tornado

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

سؤال

لقد حصلت على تطبيق Python الذي يتم تشغيله وتشغيله على خادم 24/7. أود أن أكون قادرًا على إعطاء واجهة ويب بسيطة بشكل لا يصدق حتى أتمكن من مراقبة القيم المتغيرة لبعض المتغيرات داخل البرنامج.

أنا أستخدم Tornado ، وأنا أقوم بالركض مع "Hello ، World" الذي يمكنك العثور عليه على الصفحة الرئيسية تورنادو. ومع ذلك ، بمجرد tornado.ioloop.IOLoop.instance().start() يسمى ، ويدخل في الحلقة ولا يعود. برنامجي الحالي هو (بشكل أساسي) حلقة لا حصر لها أيضًا ، لكنني أريد دمج الاثنين.

لذا ، سؤالي هو: كيف يمكنني بناء برنامجي حتى أتمكن من مراقبة المتغيرات داخل حلقة Infinite الخاصة بي باستخدام Tornado لتوفير واجهة ويب؟

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

المحلول

هل من الممكن استخدام threading حزمة وتشغيل الإعصار داخل موضوعه الخاص؟

تعديل:

ال threading توثيق الوحدة في http://docs.python.org/library/Threading.html لديه المزيد من التفاصيل ، لكنني أتخيل شيئًا كهذا:

import threading
t = threading.Thread(target = tornado.ioloop.IOLoop.instance().start)
t.start()

دعنا نذهب للعمل!

نصائح أخرى

أعتقد أن أفضل نهج (قراءة: أسهل) هو جعل تطبيق Daemon الخاص بك يكتب تلك المتغيرات المعينة التي تريد مراقبتها إلى متباعدة مشتركة يمكن أن يصل إليها تطبيق Tornado الخاص بك. يمكن أن يكون هذا ملفًا أو مقبسًا أو قاعدة بيانات أو متجر قيمة مفاتيح. بعض الأفكار التي تتبادر إلى الذهن هي استخدام قاعدة البيانات الحالية (إذا كان هناك واحد ،) SQLite ، أو حتى memcached. بعد ذلك ، سيكون لديك ببساطة تطبيق Tornado الخاص بك قراءة هذه القيم من أي مكان تخزينها.

أنت محق في ذلك بمجرد تشغيلك tornado.ioloop.IOLoop.instance().start() تدفق التحكم في تورنادو لا يعود من تلك الحلقة. من تلك النقطة إلى الأمام ، سيبقى عنصر تحكم التطبيق الخاص بك ضمن التطبيق والطلب الذي حددته.

هناك حل آخر أقل أناقة هو استخدام YAML لتسلسل الكائنات بشكل دوري من تطبيقك الرئيسي ، وجعل تطبيق الويب يقرأ تلك الموجودة. يمكنك حتى تفريغ الكائنات في YAML ، حتى تتمكن من رؤية الحالات المختلفة لهؤلاء.

يمكنك محاولة استخدام http://www.zeromq.org/ إلى وسيلة للاتصال بين العمليتين / المواضيع.

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