Twisted (асинхронный сервер) против Django (или любого другого фреймворка) - PullRequest
14 голосов
/ 11 сентября 2009

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

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

Ответы [ 6 ]

18 голосов
/ 11 сентября 2009

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

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

16 голосов
/ 11 сентября 2009

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

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

5 голосов
/ 24 сентября 2009

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

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

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

3 голосов
/ 13 сентября 2009

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

0 голосов
/ 12 сентября 2009

Если вы хотите взглянуть на какой-нибудь источник для интеграции Twisted и Django, взгляните на Yardbird .

0 голосов
/ 12 сентября 2009

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

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

...