Бутылка Питона и длинный опрос?

В настоящее время у меня есть одностраничный проект «Бутылка», работающий через localhost:8080 .

Для целей этого вопроса предположим, что единственная страница является ничем, кроме основного чата с коротким опросом, извлечения объектов чата из Python, которые содержат только имя отправителя и тело сообщения.

Эти объекты chatline хранятся в объектах чата, при этом проект допускает множественные чаты.

Чат и отправитель определяются URL-адресом. Например, если чатлайн отправляется с localhost:8080/chat/23/50 , он отправляется в чат 23 как отправитель 50, а localhost:8080/chat/23/* отображает все чат-чаты чата 23 в базовом overflow:auto div.

Текущий короткий опрос AJAX запрашивает данные с Python один раз в секунду. Я хочу сделать вещи в режиме реального времени и решил пойти с длинным опросом (хотя, если вам нравятся HTML5 WebSockets, я бы тоже не прочь узнать о них).

Мой вопрос состоит из двух частей:

  1. Как мне пойти на внедрение метода долгого опроса в такой чат-системе, желательно, используя Python's Bottle module?
  2. Как я мог бы доставить проект через фактический сервер, доступный извне (т. Е. Не только из localhost)? Даже сделать его доступным через LAN будет хорошо.

Я знаю, что длительный опрос может вызвать серьезные проблемы с производительностью на серверах, таких как Apache, и был бы признателен, если бы этот факт мог быть учтен в любых ответах; Я хотел бы как можно более масштабируемое решение.

Любая помощь приветствуется!

2 Solutions collect form web for “Бутылка Питона и длинный опрос?”

Я не пробовал себя, но думаю, вы можете использовать бутылки вместе с Tornado http://www.tornadoweb.org/ (см. Приложение Tornado – Mount Bottle ).

Можно сделать длинный опрос с помощью Tornado. Посмотрите на проект tornadio https://github.com/mrjoes/tornadio .

Вы также можете быть заинтересованы в http://pypi.python.org/pypi/bottle-tornado-websocket . Я никогда не использовал этот, но это похоже на то, что вы ищете.

В документе Tornado есть раздел о запуске в производство: http://www.tornadoweb.org/documentation/overview.html#running-tornado-in-production

Я надеюсь, что это помогает

Недавно я посетил презентацию о клиент-серверном приложении реального времени, которое отлично использовало gevent на стороне Python / server и socket.io на стороне клиента. Докладчик, Alexandre Bourget, выпустил модуль gevent-socketio ongithub , который может быть использован для упрощения всей сантехники.

Все работает только с длинным опросом HTTP (но socket.io содержит всю логику для переключения на HTML5 WebSocket или сокет Flash). Хотя каркас был Pyramid, я считаю, что он тоже должен работать с Бутылкой!

  • Множественная разбивка на страницы (ajax) не работает для django-el-pagination
  • Экран статического хода фляжки
  • Использование данных из Ajax в скрипте python
  • Проверка JQuery - проверка доступности электронной почты и имени пользователя с сервера Django
  • как читать объект JSON с помощью ajax из приложения python wsgi
  • История Django is_ajax
  • Ajax Post Request to TastyPie ничего не делает
  • json не работает в javascript в дизайне бутылок
  • Как обрабатывать ожидаемую ошибку в AJAX (включая раскрытие их пользователю)
  • как использовать функцию ajax для отправки формы без обновления страницы, что мне не хватает? Должен ли я использовать для этого режим отдыха?
  • Выполнение AJAX POST с последующим GET с Flask
  • Python - лучший язык программирования в мире.