Twisted (асинхронный сервер) и Django (или любая другая инфраструктура)

Мне нужна помощь, чтобы понять, что преимущество использования асинхронной структуры. Предположим, я хочу разработать простое веб-приложение для чата. Почему я не могу написать код python в структуре Django, который делает длинный опрос, где я не отправляю ответ на сервер, пока кто-то не войдет в новый msg. Что предлагает Twisted, что дает ему преимущество для приложений реального времени, таких как приложение чата?

Извините, я явно немного смущен необходимостью асинхронной структуры.

Ответ 1

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

Как и структура Twisted, в стандартной библиотеке Python есть также асинхронные серверные блоки: ранее asyncore и asynchat, но теперь также asyncio.

Ответ 2

Прежде всего, Django - это среда для написания веб-приложений, поэтому она предоставляет ORM, html-шаблон, для этого требуется запуск http-сервера и т.д. Twisted помогает писать код более низкого уровня, чем это. Вы можете использовать twisted для записи HTTP-сервера Django. Если вы используете Django, вы ограничены http-моделью, с помощью скрученной она может взаимодействовать в любом протоколе, который вам нравится, включая push-протоколы. Таким образом, для вашего примера чата вы получаете сервер, который масштабируется лучше, так как он может нажимать комментарии людям, которые вошли в VS с django, каждый клиент, который должен повторно опросить.

отредактирован для просмотра комментариев: sos-skyl

Ответ 3

Самое большое преимущество для меня в том, что Twisted дает мне приложение, которое имеет состояние и может общаться со многими разными клиентами, используя множество протоколов.

Для меня мой витой сервер связывается с несколькими датчиками, установленными в домах и предприятиях, которые контролируют потребление энергии. Он хранит данные и сохраняет последние данные и записывает их в удобные классы python в памяти. Запросы через xmlrpc из django получают это состояние и могут представлять последние данные пользователю. Мой материал Gridspy все еще находится в разработке, поэтому фактический сайт на вашем .gridspy.co.nz немного пре-альфа.

Самое приятное то, что вам нужен удивительно маленький код для создания эффективного сервера. Удивительный объем работы сделан для вас.

Ответ 4

В скрученном состоянии вы можете реализовать собственные протоколы. Джанго, конечно, не может этого сделать.

Ответ 5

Вы можете использовать WHIFF вместо:). Проверять, выписываться http://aaron.oirt.rutgers.edu/myapp/gfChat/nucularChatRoom который использует цикл опроса javascript с json для проверки для обновлений сервера. Вероятно, вы могли бы сделать что-то похожее в Django, но я не знаю, как, потому что я отказался от Django.

btw: Я надеюсь переместить это демо на движок Google как более полное обслуживание, когда моя жизнь немного успокаивается.

Ответ 6

Если вы хотите посмотреть на источник для интеграции Twisted и Django, посмотрите Yardbird.