Хорошие сетевые библиотеки 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 намного лучше, но для работы над архитектурой вам гораздо интереснее работать.