LINUX.ORG.RU

Клиент/серверные сетевые приложения на Python - записки дилетанта (часть 1)

 


1

3

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

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

>>> Статья

★★★★★

Проверено: Shaman007 ()
Последнее исправление: AIv (всего исправлений: 3)

Ответ на: комментарий от nutz

> Прочитав статтью, пойму ли я как, напрмиер, отослать 2 цифры от 1 клиента к другому? (нужно для игры, для отсылания текущих координат)

не надо читать такие статьи - козленочком станешь.

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

Осилил бы регу сначала, потом бы писал уже, кому и что читать

nutz ★★
()

Номера строк замусоривают текст программ. Можно было бы приглушить шрифт номеров строк или отделить колонку от текста программы вертикальной разделительной полосой.

iZEN ★★★★★
()

>print '************************'

Use

print 24 * '*'

Luke!

anonymous
()

Тут всë шрифт ругают... А ведь это дефолтный шрифт так любимого ЛОРом LaTeX-а.

anonymous
()

Не пиши больше. Вообще. Очень прошу.

anonymous
()

спасибо - будет интересно посмотреть, уже скачал

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

> Номера строк замусоривают текст программ. Можно было бы приглушить шрифт номеров строк или отделить колонку от текста программы вертикальной разделительной полосой.

Но без них трудно что то объяснять. Текст вставлен через cat -n и verbatim, там трудно что то изменить... зато просто реализовать;-)

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

> Открыл документ, попробовал прочесть. При взгляде на шрифт глаза вытекли из орбит на клавиатуру

Хм... честно говоря шрифты дефолтовские теховские, может я уже инвалид по зрению, мне взгляд не режет. Но по многочисленным просьбам трудящихся поменял на cm-super, вроде стало получше. Могу конечно на 12pt еще поменять.

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

Спасибо, трудящиеся этого не забудут! Поменять на 12pt будет еще лучше. У меня LCD моник и сглаживание 10pt-шрифта (как в Adobe Reader) читать тяжеловато.

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

У меня тоже LCD 11" (ноут) и ничего;-)

Ладно, ради трудящихся чего не сделаешь... поменял на 12pt.

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

страница 15

>>> _dir() → (’DIR’,ID)
  File "<stdin>", line 1
    _dir() → (’DIR’,ID)
           ^
SyntaxError: invalid syntax

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

> Годится для домашней странички васи пупкина. Если бы я работал в «Институте прикладной математики им. М.В.Келдыша РАН», то я бы постеснялся упоминать название института в такой статье.

Если бы у меня было пять звезд на ЛОРе, я бы поленился писать такие комменты, а просто попросил модератора убрать не понравившийся материал нафик;-)

Чем ругаться, скажите лучше несчастному дилетанту, а в многожды раз упоминавшемся twisted есть ли аналог DCOM (на сервере по запросу создается экземпляр пользовательского класса, клиент получает его оболочку и вообще не замечает что работает удаленно)? И поддерживается ли передача исключений с сервера (из нити клиента) на клиент, т.е. на сервере что то грохнулось а эксепшен вылетает у клиента, причем в отчете виден и стек сервера? И насколько просто этот твистед развернуть под виндой из коробки (клиентскую часть)?

PS Вообще всем кто повелся на «дилетанта» - да, считаю себя дилетантом, особенно в сетевом программировании, потому что проф. программисты гораздо лучше знают КАК писать программы. К сожалению, проф. программистам в моей области очень трудно объяснить что нужно писать и совершенно невозможно объяснить почему нужно писать именно это, а не скажем какой нить веб-сервер.

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

AIv ★★★★★
() автор топика
Ответ на: комментарий от anonymous
>>> anonymous
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'anonymous' is not defined

Не всякий текст надо копипастить в интерпретатор, что то написано просто для чтения;-)

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

Чем ругаться, скажите лучше несчастному дилетанту, а в многожды раз упоминавшемся twisted есть ли аналог DCOM

Понятия не имею, но если twisted это аналог boost::asio, то есть предоставляет базовые примитивы для написания асинхронных программ, то сделать на нем можно всё что угодно. Я же говорю, что сама идея передачи объектов с помощью pickle правильная, но вот реализация руками на сокетах и «потоках» - дерьмо и годится только для того чтобы поиграться. И да, к науке и к прикладной математике это вообще не имеет никакого отношения, поэтому оформлять это в виде pdf'ника и тем более упоминать название института не надо.

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

Гы... сделать можно что угодно на чем угодно. Я б не стал постить тут эту статью, если б не мнение знакомых НЕ-дилетантов, что написанное представляет интерес. Если кому то нужна такая функциональность, но не нравятся ручные потоки и сокеты питона, он может взять правильные протоколы передачи данных twisted и сделать то же самое. Мне например пока что twisted просто не нужен.

Сейчас у меня переход от обычного приложения (есть скажем библиотечный класс и форточка к нему) к клиент-серверному занимает 6 строк - импорт модуля на сервере, настройка логов, запуск сервера; импорт модуля на клиенте, настройка логов, подъем коннекта. Вся отладка совершенно прозрачная.

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

Насчет pdf и шапки - во первых я так привык. Во вторых, был опыт, выложил тут статью в html, нашел через неск лет на python.su почему то без своей фамилии. Сначала даже не узнал - ой думаю какая статья хорошая но неск наивная, я бы сделал похоже но чуть лучше... только до конца дочитав вспомнил что моя;-)

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

> Прочитав статтью, пойму ли я как, напрмиер, отослать 2 цифры от 1 клиента к другому? (нужно для игры, для отсылания текущих координат)

Поймете, если не будете разговаривать с анонимусами - они тут часто считают себя большими профи и с большим пафосом говорят большие глупости;-)

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

Спасибо, аль не обманываете, скачаю почитаю, как дойду до той точки, когда надо будет мультиплеер делать

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

> многожды раз упоминавшемся twisted есть ли аналог DCOM (на сервере по запросу создается экземпляр пользовательского класса, клиент получает его оболочку и вообще не замечает что работает удаленно)?

тебе же уже не единожды сказали «учи twisted». там есть ответы на многие твои вопросы. и прекрати уже распространять ересь.

anonymous
()

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

институту должно стать стыдно. автор первокурсник?

bobrik
()
Ответ на: комментарий от AIv

такие статьи надо постить в девелопмент, а не на главную

Насчет pdf и шапки - во первых я так привык. Во вторых, был опыт, выложил тут статью в html, нашел через неск лет на python.su почему то без своей фамилии.

типа защита?

есть pdftohtml -xml, а дальше простым перловым скриптом и вуаля!

З.Ы. пдф говно, т.к. нихрена не читается на карманных устройствах

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

>Насчет pdf и шапки

а еще есть qpdf, позволяет удобно стирать ненужное из пдф-ки

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

> И поддерживается ли передача исключений с сервера (из нити клиента) на клиент, т.е. на сервере что то грохнулось а эксепшен вылетает у клиента, причем в отчете виден и стек сервера?

это хорошая тема для языкового флейма, но *с этого* и надо было начать

будь тут институт благородных девиц, а не лор, никто бы не заставил тебя наконец сказать самое главное

www_linux_org_ru ★★★★★
()

Код ужасен. Скажу по-секрету, pickle для обмена по сети использовать категорически нельзя. Ибо небезопасно. За разъяснениями - в документацию по pickle

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

Во первых, я про это сказал, читайте внимательней? Во вторых, там где я это юзаю наплевать на безопасность, поскоку все крутится в изолированной локалке (слава виндовсу на клиентcких местах и боящемуся вирусов заказчику). В третьих, можно прикрутить авторизацию и SSL если захочется. О какой дыре в безопасности Вы говорите, если клиент прошедший авторизацию и так может спокойненько влезть на сервер по ssh?

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

> институту должно стать стыдно. автор первокурсник?

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

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

> будь тут институт благородных девиц, а не лор, никто бы не заставил тебя наконец сказать самое главное

Будь тут не ЛОР - народ бы читал внимательно текст, там все сказано. Но поскольку на ЛОРе анонимусами и им подобными принято категорично высказывать свое неквалифицированное мнение, сформированное на основе PEP8 и беглом просмотре документации, то конечно код ужасен, pdf г-но и т.д. и т.п. Это забавно.

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

> З.Ы. пдф говно, т.к. нихрена не читается на карманных устройствах

У меня читается. Может Вам все же купить нормальное карманное устройство?;-)

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

Большое спасибо за статью и есть пара вопросов, стукнитесь на vpopov@ualinux.com

popov
()

AIv, советую пользоваться пакетом lstlistings для включения исходников - получаем красивое форматирование и подсветку синтаксиса в документе (плюс - нумерация строк и много чего еще).

А статья интересная, вот жаль, только, что не на С.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Я этот пакет смотрел, мне не понравилось. И оформление тамошнее не понравилась, и главное проблемы с переносом в другие форматы. latex2rtf его не ест например... Наверное я просто консервативный старпер;-)

Под С++ я думаю что то похожее можно замутить (там же тоже есть сериализация), с С сложнее... а вот как исключения передавать ума не приложу. Впрочем для С эта тема должна быть проработана вдоль и поперек?

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

latex2rtf его не ест например...

Так он вообще, кроме plain-text'а почти ничего не ест :) (да и вообще, зачем вам rtf/doc?) Зато pdf'ки получаются симпатичные...

Впрочем для С эта тема должна быть проработана вдоль и поперек?

Ну, например, есть тот же Стивенс. Но в таком сжатом виде я еще не встречал ничего. Хочется простых примеров: на компьютере А запускаем сервер, слушающий порты A:A и A:B; на компьютере B запускаем клиент, соединяющийся с A:A и A:B; обмениваемся данными... Ну и всякие там обработки исключений. Ну и всякие широковещательные пакеты и т.п.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

> Так он вообще, кроме plain-text'а почти ничего не ест :) (да и вообще, зачем вам rtf/doc?) Зато pdf'ки получаются симпатичные...

Никогда не знаешь заранее, какую часть будешь сувать в отчет;-) Ну и все равно, их оформление меня как то не впечатлило, я привык что исходники должны быть шрифтом печатной машинки. Вот от ссылок на куски кода я б не отказался, а то явно пишешь номера строк в тексте а потом меняешь исходник и все по новой... в listings оно есть?

Про С увы не скажу ничего, я с сетью только на питоне работал, мне хватает. Да и красиво ж получается;-)

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

Спасибо, посмотрю! Хотя опять таки - похоже возникла необходимость гнать как раз эти тексты в rtf... может просто свой фильтр напишу вместо cat -n.

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

Да, к сожалению, latex2html тоже не обрабатывает lstlistings (точнее, он компилирует исходники в картинки).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от AIv

> У меня читается. Может Вам все же купить нормальное карманное устройство?;-)

рефлоу там происходит?

у меня разрешение 800х480, и этого мало; айфоновскиз 960 тоже не хватит

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

> Будь тут не ЛОР - народ бы читал внимательно текст, там все сказано.

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

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

Что есть рефлоу я не знаю.

Все интересное кратко написано в топике (анонсе статьи, пролистайте ч толь наверх) и в заключении. Охренеть как продуктивно повторять одно и тоже, пока до читателя с дцатого раза не дойдет! Простите, я не умею писать для больных дислексией.

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

> Скажу по-секрету, pickle для обмена по сети использовать категорически нельзя. Ибо небезопасно. За разъяснениями - в документацию по pickle

Куда именно там смотреть? Цитата: «it is also conceivable to send them across a network».

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

> Что есть рефлоу я не знаю.

reflow

это то, что должна делать хорошая читалка пдф; да вот беда, пдф в отличие от хтмл под рефлоу не проектировался — поэтому он и говно

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

пдф в отличие от хтмл под рефлоу не проектировался — поэтому он и говно

ну, ты вот под рожание детей не проектировался — «поэтому» ты «говно»?

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

> ну, ты вот под рожание детей не проектировался — «поэтому» ты «говно»?

придется уточнить

пдф говно для любой цели, отличной от печати на бумаге одного заранее выбранного формата; в частности, говно для цели «выставить произведение почитать»

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

Ну тут я с Вами не согласен категорически. PDF идеальный формат для представления вещей, в которых есть что то кроме текста и имеет значение форматирование. В частности лично я предпочитаю чиать книги именно в формате PDF а не в каком то другом, такой вот я извращенец, да.

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

пдф говно для любой цели, отличной от печати на бумаге

Абсолютно верно. Но других форматов еще не придумали. Увы. djvu еще хуже. fb2 не поддерживает серьезное форматирование (да и вообще не годится ни для чего, кроме plain-text'а с картинками). Про html вообще молчу.

Так что, если выбирать из «говен», то pdf, все-таки, более сладкое «говно».

А какой же формат по-вашему достоен называться «не говном»?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

html 3 вполне может, если таблицам добавть стиль inline

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

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

html 3 вполне может

Картинки показывать и plain text. ХТМЛ вообще не предназначен для серьезной верстки.

рефлоу абзацев

Шо це таке? Я по-вашему не бачу.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

>Хочется простых примеров: на компьютере А запускаем сервер, слушающий порты A:A и A:B; на компьютере B запускаем клиент, соединяющийся с A:A и A:B; обмениваемся данными... Ну и всякие там обработки исключений. Ну и всякие широковещательные пакеты и т.п.

Зайди уже в гугл. Статеек на тему сетевых примитивов по типу эхо-серверов вагон с тележкой, там же обычно рассматриваются варианты более сложного взаимодействия. Еще может быть полезным man 7 socket 7 ip 7 udp и дальше по ссылкам.

...

Статью прочитал. С одной стороны скучненько (может потому, что я сонный?), с другой - хадкорненько (после простого эхо-сервера сразу лезем в дебри передачи исключений), с третьей - кошмарненько (может для питонистов это и нормально, но мне кажется диким такое клиент-серверное взаимодействие). С пистоном знаком постольку поскольку. Про дерьмовое оформление уже сказали.

Кому-то наверное пригодится.

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