Форум сайта python.su
В простейшем случае не нужны никакие сокеты и торнады, просто с помощью js раз в пять секунд делаем запрос на сервери получаем данные о процессе выполнения задания.
Офлайн
plusplusЗадача непонятна. Зачем разным пользователям в одно время запускать одну и ту же настройку?
два пользователя одновременно не могут запустить эту настройку.
Отредактировано o7412369815963 (Сен. 2, 2013 17:52:01)
Офлайн
Задача непонятна. Зачем разным пользователям в одно время запускать одну и ту же настройку?
Я подобные вещи делал проще, пользователь запускает задачу, ей присваивается ид и она отражается в списке запущенных, на этот ид валится лог, пользователь через ajax забирает лог каждые 5 сек - видит процесс в реальном времени + бежит прогресс бар % выполнения задачи, другой пользователь может зайти на этот лог по урлу (из списка) и наблюдать то же самое.
Это админская штука, тут веб-сокеты не нужны.
Веб-сокеты - штука удобная, но для некоторых браузеров нужно юзать всякие костыли.Пользователи установят нужный браузер)
Офлайн
plusplusНаверно вы используете торнадо и запускаете блокирующую операцию? Тогда вам нужно использовать не блокирующие операции (асинхронные). Для запуска операции что используете?
о в данный момент запустить получится только у одного, остальным придется ждать первого.
plusplusДа, задача запускается отдельным процессом, пишет лог в свой файл, и туда же тегами указывает % выполнения - для прогресс-бара. Все клиенты через ajax получают интересующий лог.
А задача каким образом запускается? Отдельным процессом?
Офлайн
o7412369815963
Наверно вы используете торнадо и запускаете блокирующую операцию? Тогда вам нужно использовать не блокирующие операции (асинхронные). Для запуска операции что используете?
class CountersSocket(tornado.websocket.WebSocketHandler):
def on_message(self, message):
# эта операция долго выполняется
self.setup(message)
Офлайн
plusplusГрубо говоря этот декоратор только отменяет закрытие коннекта при завершении ф-ии.
Я так понимаю декоратор @tornado.web.asynchronous мне ничем тут не поможет?
plusplusДа, т.к. нагрузка маленькая, потоки особо не помешают.
Надо делать либо потоки, либо менять торнадо на что-то другое. Вот мой вопрос в этом и был, что лучше выбрать?
Офлайн