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.