Давая мою приложение Python веб-интерфейс для мониторинга его, используя Tornado

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

Вопрос

У меня есть приложение Python, которое является демомозонным и работает на сервере 24/7. Я хотел бы получить невероятно простой веб-интерфейс, чтобы я мог контролировать изменения изменяющихся значений нескольких переменных в рамках программы.

Я использую торнадо, и я работаю с простым «Привет, мир», который вы можете найти на Главная страница торнадо. Отказ Однако, как только tornado.ioloop.IOLoop.instance().start() называется, он входит в петлю и не возвращается. Моя существующая программа - это (по существу) бесконечной петлей, но я хочу интегрировать два.

Итак, мой вопрос: как я могу построить мою программу, чтобы я мог отслеживать переменные внутри моей бесконечной петли с помощью TORNADO, чтобы обеспечить веб-интерфейс?

Это было полезно?

Решение

Можно ли использовать threading Пакет и беги торнадо внутри собственной нити?

Редактировать:

То threading Модульная документация http://docs.ython.org/library/thhreading.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