Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 24, 2013 16:49:50

Logrus_ak
Зарегистрирован: 2012-08-25
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Tornado sheduler/

Добрый день. Подскажите, пожалуйста, алгоритм либо где почитать о подобном.

Что есть: Клент на джаваскрипте, сервер на торнадо, Общаются между собой через вебсокеты.

Как работает: Клиент делает какие то действия, отправляет их на сервер. На сервере написано приложение, которому торнадо передает сообщения. Приложение проводит рассчеты и отсылает другим клиентам данные также через торнадо.
В чем сложность: Сервер рассылает сообщения клиентам только в случае ,если какой то клиент что-то отправил и сработал метод on_message(self, message) в обработчике.

Что нужно: Хотелось бы, чтобы сервер мог одновременно отправлять свое текущее состояние по таймингу не зависимо общаются с ним клиенты или нет. Скажем пару раз в секунду. Думал сначала про треды, но придется на каждую сессию в которой находятся 2-3 пользователя создавать отдельный тред. Сессий таких несколько тысяч. Хотелось бы, чтобы все было асинхронно.

п.с Не знал в какую тему написать в веб или в нетворк.

Офлайн

#2 Дек. 24, 2013 22:26:25

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Tornado sheduler/

Logrus_ak
В чем сложность: Сервер рассылает сообщения клиентам только в случае ,если какой то клиент что-то отправил и сработал метод on_message(self, message) в обработчике.
Через веб-сокет можно в любой момент отправлять сообщения клиентам, храните все подключения клиентов в списке, и отправляйте всем сообщение в нужный момент.

Logrus_ak
На сервере написано приложение, которому торнадо передает сообщения
Каким образом передает сообщения и принимает результат?
Вот пример запуска приложения асинхронно, если что. Для
жирных расчетов - самое-то.

Logrus_ak
Хотелось бы, чтобы сервер мог одновременно отправлять свое текущее состояние по таймингу не зависимо общаются с ним клиенты или нет. Скажем пару раз в секунду.
Может, но зачем? Сделать таймер и рассылку по списку коннектов.

Logrus_ak
Думал сначала про треды
треды при торнадо точно не нужны

Офлайн

#3 Дек. 25, 2013 00:00:51

Logrus_ak
Зарегистрирован: 2012-08-25
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Tornado sheduler/

Спасибо большое. Почитал документацию и нашел класс tornado.ioloop.PeriodicCallback - используя данный класс можно добавлять периодически выполняемые задачи. То есть,можно вызывать задачу через заданное количество времени.

Ссылки по вопросу:
http://www.tornadoweb.org/en/stable/ioloop.html#tornado.ioloop.PeriodicCallback
http://michael-xiii.blogspot.com/2012/02/tornado-periodiccallback.html

Отредактировано Logrus_ak (Дек. 25, 2013 00:01:37)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version