LINUX.ORG.RU

Правильная реализация клиента на питоне.

 , ,


5

3

Нужен tcp клиент, решил делать на питоне. Клиент посылает на сервер сообщения вводимые с консоли и как то обрабатывает результат. Вопрос следующий : для прослушивания ответов сервера нужно ли создавать отдельный поток или можно как то обойтись без этого (ну или как то в не явном виде). Также буду благодарен за пример подобной программы на питоне

★★

Вопрос следующий : для прослушивания ответов сервера нужно ли создавать отдельный поток или можно как то обойтись без этого (ну или как то в не явном виде).

Почитай про select/poll/epoll и неблокирующий ввод-вывод. Из удобных реализаций рекомендую посмотреть на tornado.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от shty

пример кода: echo server

Чувак я это конечно же видел, если ты обратил внимание мне надо читать консольи слать на сервер, и потом посылать на сервер, еще принимать и выводить на консоль, а не просто послать один пакет и прекратить работу программы. Как сделать вот это вот все

mio ★★
() автор топика
Ответ на: комментарий от mio

Банально обернуть в бесконечный цикл и блок try-except. На KeyboardInterrupt закрыть соединения.

dtm
()

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

nokachi
()

Не слушай велосипедостроителей выше. Просто используй ZeroMQ. Хороший пример найдешь на опеннет

Siado ★★★★★
()

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

для этого даже питон не нужен :-) Семпл в комплекте с libc.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

для этого даже питон не нужен :-) Семпл в комплекте с libc.

Это да, просто там еще много лигики всякой которую мне влом на С писать

mio ★★
() автор топика
Ответ на: комментарий от Siado

хорошая штука, но на сервере тоже должен быть zeromq

mio ★★
() автор топика

Лол любят все сразу фреймворки всякие суватеньки:=)

Если, всё так просто, как ты говоришь, то

man select
.

Затем read this. Для простых случаев - всё есть из коробки.

Если планируешь поддерживать венду, не поддавайся на искушение, жрать stdin селектом, там с этим вроде какие то заплёты есть (читай, таки да, сделай поток, и очередь к нему).

Потоки (особенно в питоне и иже с ним) штука на самом деле реально простая, пока ты готов платить(ресурсами) за блокировки.

pon4ik ★★★★★
()
Ответ на: комментарий от anonymous

Не смотри на twisted, лучше уж tornado или gevent.

не смотри на всё это. смотри на Asyncio .

после появления Asyncio — теперь всё это (twisted,tornado,gevent) по факту устарело и живёт только ради поддержания уже написанного legacy-кода

# P.S.: а недавно — мою любимую социальную сеть FriendFeed закрыли, а она была написана как раз на Tornado :-)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от user_id_68054

после появления Asyncio — теперь всё это (twisted,tornado,gevent) по факту устарело и живёт только ради поддержания уже написанного legacy-кода

Пока на продакшенах везде 2.7, то Asyncio существует, чтобы было.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от pon4ik

Если планируешь поддерживать венду, не поддавайся на искушение, жрать stdin селектом, там с этим вроде какие то заплёты

Не вроде, а совершенно точно - select под виндой умеет только сокеты.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от user_id_68054

Ты это, ещё скажи что надо на 3 питон везде переходить:)

Кстати, есть где то наглядный список аргументов на тему, зачем таки нужна несовместимая, новая версия? Не срача ради, а реально попырил бы.

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

Кстати, есть где то наглядный список аргументов на тему, зачем таки нужна несовместимая, новая версия

Пофиксить недоразумения из старой (например работу со строками), что приводит к несовместимости кода.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Я просто к тому, что если бы была у сообщества ссыль, которой можно кинуться в любой тупняк типа меня, процесс пошёл бы быстрее, ибо если уж мне не особо понятно нафига - обьяснить это кастомерам или хотя бы менеджменту, практически нереально и нет мотивации.

Не собирать же по форумам ответы.

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

обьяснить это кастомерам или хотя бы менеджменту

Если им не пофиг питон2 или питон3, то причины использовать/не использовать питон3 будут им известны.

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

PolarFox ★★★★★
()
Ответ на: комментарий от pon4ik

Кстати, есть где то наглядный список аргументов на тему, зачем таки нужна несовместимая, новая версия?

у python-2 много недостатков .. и они обговаривались много раз... но здесь я тебе напишу ГЛАВНЫЙ (ФАТАЛЬНЫЙ) недостаток версии python-2:

*** python-2 несовместим с python-3 ***

как минимум даже одного этого недостатка — уже для тебя должно быть достаточно чтобы не писать на python-2 :-)

несовместимая, новая версия

и ещё раз — утоняю:

python-3 это НЕ «новая версия». (а просто обычная версия)

этой версии уже 10 лет исполнилось. :)

довольно *странно* называть версию новой, после десятка лет её жизни :-)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 4)
Ответ на: комментарий от Vovka-Korovka

Пока на продакшенах везде 2.7, то Asyncio существует, чтобы было.

это что за такие продекшены?

может ты просто командой yum install ... не умеешь пользоваться? :-)

если научишься — то откроешь для себя дивный мир разнообразных пакетов :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

Ну тем не менее эта не новая версия так и не поселилась на продкшне. Либо все дураки, либо как бэ не настолько оно лучше.

В любом случае, это всё софистика, надо нормальную мотивационную сравнялку.

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

Ну тем не менее эта не новая версия так и не поселилась на продкшне.

ну в твоей версии реальности так... :-)

В любом случае, это всё софистика, надо нормальную мотивационную сравнялку.

сначала назови мотивацию (как минимум реши для себя) — какой смысл прыгать из Python-3 на Python-2 :-)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 3)
Ответ на: комментарий от user_id_68054

может ты просто командой yum install ... не умеешь пользоваться?

Давно в репозитории шестого центоса питон 3.4 завезли?

если научишься — то откроешь для себя дивный мир разнообразных пакетов :-)

Да куда ж нам болезным до настоящих профессионалов, роняющих здесь крохи мудрости.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от beastie

но с py3 не работает

Ну я ещё года три назад использовал с одним из форков gevent под py3k.

true_admin ★★★★★
()
Ответ на: комментарий от user_id_68054

смотри на Asyncio

На сколько оно сейчас развито? А то раньше его поддерживало полторы сторонние библиотеки, даже в самом питоне был очень минимальный набор функций.

true_admin ★★★★★
()
Ответ на: комментарий от user_id_68054

python2 есть практически везде и много где из коробки.

Отличная мотивация по моему...

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

Но, если ты всё таки хочешь подискутировать - то представь что я твой работодатель, и ты мне такой обьясняешь, почему я должен убедить кастомера(который так то нам всем денег платит), который не кисло так бабла отвалил редхату и другим конторам, что бы его решение заработало отказоустойчиво и штабильно. Взять и вдруг впилить в систему компонент из какого нибудь epel'a, после чего его саппорт пошлёт куда подальше при первом удобном случае. А поддерживать сиё практически без изменений можно ещё лет этак 10.

Я пока что тебе отвечаю - ты что сдурел что ли, и так всё пашет, а кастомер на саппорте сидит. Так вот какой тот сабсет прямо критических исправлений, который говорит что надо сломать всю совместимость и прямо таки переходить на 3ий питон?

Оно работает быстрее? Оно лишилось гила?

Или там добавили 5 фич, 10 либ и 2 кусочка сахара?

Вообсчем надо было либо разрабам питона вешать обьяву, аля всё ребяты, через пол года мы 2.7 больше не саппортаем - бывайте. Либо не ломать совместимость. Хотя бы не в следующей мажорной версии.

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

Вообсчем надо было либо разрабам питона вешать обьяву, аля всё ребяты, через пол года мы 2.7 больше не саппортаем - бывайте.

Как будто это ред хат остановит, у них и так питон обмазан патчами по самое немогу.

Vovka-Korovka ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

> может ты просто командой yum install ... не умеешь пользоваться?

Давно в репозитории шестого центоса питон 3.4 завезли?

3.3 — тоже норм :) .. и asyncio там работает

user_id_68054 ★★★★★
()
Ответ на: комментарий от pon4ik

python2 есть практически везде и много где из коробки.

ровно как и Python3

Но, если ты всё таки хочешь подискутировать - то представь что я твой
работодатель, и ты мне такой обьясняешь, почему я должен убедить
кастомера(который так то нам всем денег платит), который не кисло так
бабла отвалил редхату и другим конторам, что бы его решение
заработало отказоустойчиво и штабильно. Взять и вдруг впилить в
систему компонент из какого нибудь epel'a, после чего его саппорт
пошлёт куда подальше при первом удобном случае. А поддерживать сиё
практически без изменений можно ещё лет этак 10.

Я пока что тебе отвечаю - ты что сдурел что ли, и так всё пашет, а
кастомер на саппорте сидит. Так вот какой тот сабсет прямо
критических исправлений, который говорит что надо сломать всю
совместимость и прямо таки переходить на 3ий питон?

5~10 лет назад мы могли бы подискутировать на эту тему :-) .. а теперь уже тема спора не может быть прежней.

Python-3 это обычная нормальная версия. а ты приходишь тут и уговариваешь всех писать именно на Python-2 ...

ну хорошо, это твоё право (и твоё мнение), но в этом случае — вот ты и приводи аргументы за использование Python-2 :-) ..

Python-2 работает сильно быстрее ?

Python-2 не имеет GIL ?

у Python-2 нормальна совместимость с обычным Python ? (обычный, значит Python-3).

ну и вообще какие там у тебя аргументы за переход от Python-3 к Python-2 :-)

# P.S.: и вообще почитай изначально тему в которой отвечаешь.. человек НЕ спрашивает что\как ему *поддержвать* нужно.. а спрашиваешь как написать новую программу. :-) "Нужен tcp клиент, решил делать на питоне. ..."

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 6)
Ответ на: комментарий от user_id_68054

гррр.

Зачем слова мои переиначиваешь.

Я никого, никуда не призываю.

# P.S.: и вообще почитай изначально тему в которой отвечаешь.. человек НЕ спрашивает что\как ему *поддержвать* нужно.. а спрашиваешь как написать новую программу. :-) «Нужен tcp клиент, решил делать на питоне. ...»

Ну дык не я выступил в роли пророка питона версии номер три и пришествия его. Я тупо посоветовал не тягать фреймворки почём зря.

pon4ik ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

Если бы это было в том же году (хотя бы), что и выпуск 3.1 например, то думаю прокатило бы. Особенно если где надо бы налепили красных табличек legacy.

pon4ik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.