Кэш сообщений Python для кометы? - PullRequest
1 голос
/ 10 марта 2011

Я могу лучше всего описать то, что я ищу, на примере упрощенной версии.Одна из демонстраций для Tornado - простой чат-сервер:

https://github.com/facebook/tornado/blob/master/demos/chat/chatdemo.py

Меня интересует класс MessageMixin здесь.Он хранит в очереди статические сообщения, а когда новые сообщения становятся доступными, он возвращает часть списка сообщений, которая является новой.Или это то, что он делает.Я знаю, что реализовал нечто подобное раньше, когда писал простое кометное приложение.

Так кто-нибудь обобщил это и добавил к нему причудливые вещи?Меня особенно интересует способ управления многими каналами связи и удаления каналов, которые давно не использовались.Постоянство также может быть полезным.

Может ли это сделать MQ?

1 Ответ

3 голосов
/ 14 марта 2011

Redis имеет функцию публикации / подписки , наряду с дополнительными командами, ориентированными на структуру данных , которые можно использовать для сохранения и истечения срока ожидания сообщения, списка пользователи в данной комнате или другие атрибуты, связанные с ними. Протокол основан на тексте и является расширенным набором команд Memcached.

Вот описание, которое использует chat в качестве примера pub / sub вместе с Ruby, использующим Websocket , и фрагмент в Python, который использует Websocket, Tornado и Redis pub / sub для реализации простого чата.

На основании информации в вашем вопросе вам также может быть полезна выделенная очередь сообщений (например, RabbitMQ ). Трудно сказать, не зная, что вам нужно в таких областях, как объем сообщений, отказоустойчивость, репликация и т. Д. Redis также может быть тем, что вы ищете, но если ничего другого, то он довольно прост и может помочь вам получить Прототип работает быстро, чтобы еще больше закрепить требования вашего приложения.

...