Должен ли я использовать orbited или gevent для интеграции функциональности кометы в приложение django

Я уже давно работаю с Django и написал несколько приложений на установке, использующей Apache 2 mod_wsgi и базу данных PostgreSQL на ubuntu.

У меня есть приложение, которое использует xsendfile для обслуживания файлов из Apache через представление Django, а также позволяет пользователям загружать файлы через форму. Все это отлично работает, но теперь я хочу расширить функции (и, насколько я уверен, сложность), позволяя пользователям общаться в чате и видеть, когда загружаются новые файлы без обновления браузера.

Поскольку я хочу, чтобы это было масштабируемым, я не хочу постоянно проводить опрос с помощью AJAX, поскольку это будет очень тяжело с большим количеством пользователей.

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

Должен ли я использовать орбитальный, gevent, iosocket? Где Торнадо вписывается в эту дискуссию?

Я хочу, чтобы сообщения также сохранялись в базе данных, поэтому нужна ли мне какая-либо специальная конфигурация, чтобы предотвратить блокирование моего приложения при записи в базу данных? Будет ли запуск сервера чата с Django повлиять на мою способность обслуживать файлы из Apache?

    Я бы рекомендовал использовать WebSockets для двунаправленной связи в реальном времени. Продолжайте запускать Django как есть и запустите сервер WebSocket на другом порту. Что касается блокировки базы данных, да, вам нужно помнить об этом при написании своего сервера WebSocket и либо использовать неблокирующий драйвер базы данных, либо адрес, который каким-то образом.

    На стороне клиента вы захотите использовать Socket.IO или web-socket-js для поддержки резервного копирования Flash для старых браузеров, которые не поддерживают флэш-память.

    Для сервера я бы склонялся к gevent или торнадо, лично. Для gevent есть gevent-websocket и gevent-socketio , для торнадо вы получаете встроенную поддержку WebSocket и можете использовать торнадо, если вы хотите использовать Socket.IO. Eventlet и скрученные оба поддерживают WebSockets. Существует также довольно классный новый проект под названием autobahn, который построен на скрученном, а у meinheld есть промежуточное ПО WebSocket, которое вы можете использовать.

    WebSockets довольно увлекательны, и, как таковой, на эту тему есть множество замечательных сообщений. Я нашел эти сообщения полезными:

    Вместо Apache + X-Sendfile вы можете использовать Nginx + X-Accel-Redirect. Таким образом, вы можете запустить сервер gevent / wsgi / django за Nginx с представлениями, которые обеспечивают длительный опрос. Нет необходимости в отдельном сервере websockets.

    Я использовал как Apache + X-Sendfile, так и Nginx + X-Accel-Redirect, чтобы без проблем работать с содержимым (защищенным доступом) в Webfaction.