Хорошие сетевые библиотеки Python для построения TCP-сервера?
Мне просто интересно, какие там есть сетевые библиотеки для Python для создания TCP/IP-сервера. Я знаю, что Твист может вспомнить, но документация кажется скудной, неряшливой и разбросанной по мне.
Кроме того, использование Twisted даже может принести выгоду при прокатке моего собственного сервера с помощью select.select()?
Ответы
Ответ 1
Я должен согласиться с тем, что документация немного краткая, но учебник быстро запускает вас.
http://twistedmatrix.com/projects/core/documentation/howto/tutorial/index.html
Парадигма программирования на основе событий Twisted и ее отсрочки могут быть немного странными в начале (для меня), но это стоит кривая обучения.
Вы будете запускать и запускать гораздо более сложные вещи быстрее, чем если бы вы могли написать свою собственную фреймворк, и это также означало бы одну вещь для поиска ошибок, поскольку Twisted очень доказала свою эффективность.
Я не знаю другой структуры, которая может предложить столько, сколько может быть Twisted, поэтому мой голос определенно пойдет за Twisted, даже если документы не для слабонервных.
Я согласен с Грегом в том, что SocketServer - это отличная промежуточная площадка, но в зависимости от целевой аудитории вашего приложения и его дизайна у вас может быть приятный материал, на который можно рассчитывать в Twisted (перспективный брокер, который очень полезен, приходит на ум - http://twistedmatrix.com/projects/core/documentation/howto/pb-intro.html)
Ответ 2
Стандартная библиотека включает SocketServer и связанные с ним модули, которые могут быть достаточными для ваших нужд. Это хорошая промежуточная точка между сложной структурой, такой как Twisted, и перемещением вашего собственного цикла select().
Ответ 3
Если вы не хотите использовать Twisted, вы можете проверить SocketServer.ThreadingTCPServer. Это достаточно легко использовать, и это достаточно хорошо для многих целей.
В большинстве ситуаций Twisted, вероятно, будет быстрее и надежнее, поэтому я бы повредил документацию, если вы можете:)
Ответ 4
Просто добавив ответ для повторного итерации других плакатов - это будет стоить использовать Twisted. Там нет оснований для написания еще одного TCP-сервера, который в конечном итоге будет работать не так хорошо, как один с использованием скрученного. Единственная причина заключалась бы в том, что, если вы пишете свою собственную, это намного быстрее, с точки зрения разработчика, но если вы просто укусите пулю и научитесь скручивать сейчас, ваши будущие проекты будут очень полезны. И, как говорили другие, вы сможете делать гораздо более сложные вещи, если вы используете скрученные с самого начала.
Ответ 5
Я пробовал 3 подхода:
- Напишите мой собственный цикл select() framework (в значительной степени мертвый, я не обязательно рекомендую его.)
- Использование SocketServer
- Twisted
Я использовал SocketServer для внутренней веб-службы с довольно низким трафиком. Используется для довольно высокой внутренней службы ведения журнала трафика. Оба они отлично работают и кажутся довольно надежными для использования в производстве. Для всего, что нужно для исполнения, я думаю, что материал Twisted намного лучше, но для работы над архитектурой вам гораздо интереснее работать.