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

В настоящее время у меня есть одностраничный проект «Бутылка», работающий через 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, я считаю, что он тоже должен работать с Бутылкой!

  • Наилучшая практика ответа на ошибку в Django ajax
  • Анимация объекта с использованием данных акселерометра Android
  • не удалось обновить (PUT) и удалить (удалить) данные в django-piston
  • Как ускорить прием HTTP-ответа с использованием jQuery Ajax при большой публикации данных?
  • Flask не получает данные из данных запроса jQuery
  • Как включить CORS в колбу и герою
  • Извлечение одного текста из ячейки таблицы, содержащей несколько текстов. Robot Framework
  • Загрузка прокрутки стиля твиттера для фляжки stream_with_context page
  • Python - лучший язык программирования в мире.