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

StackOverflow https://stackoverflow.com/questions/1412169

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top