Хочу стать программистом ч.3

Спасибо всем за поддержку и теплые слова, написанные в комментариях к прошлому посту. Мне было приятно читать = )


Ссылку на репозиторий скину в конце статьи, в дальнейшем планирую писать новый пост примерно раз в неделю с новыми фичами, а на данный момент опубликую пока то что есть.



Итак мы будем делать клиент-серверное приложение. Сперва мой выбор пал на стандартную библиотеку питона socketserver, но он разрывает связь после первого обмена данными, поэтому реализация  будет на socket


Начнем с сервера (код):

Большинство кода являет собой копипасту из документации по модулю selectors.

Cуть в том, что мы слушаем сокет и в бесконечном цикле слушаем события от модуля selectors, заранее вешая туда обработчик accept. Таким образом мы можем подключаться одновременно с нескольких клиентов.


Из интересного можно отметить код split_input_data, где мы регуляркой разбиваем входящие данные на кортеж.


Код клиента вообще прост как 2 копейки(код):

-просто подключается

- ждем ввод

- пишем ответ



Сама структура для хранения сейчас представлена в виде словаря, напомню главная цель данной активности - чтоб работало, о скорости подумаем потом = )

Записывать свое состояние пока не умеет, просто хранит словари в памяти и отдает данные по ключу.

Реализация опять же проста на данный момент. Код



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

Как замерить скорость и сравнить с реальным redis?

Полное непонимание того как пишутся распределенные приложения.



Ссылка на гит - https://github.com/straus123/strais


Как обычно рад адекватной и не очень критике.

Спасибо!

Программирование на python

648 постов11.8K подписчиков

Добавить пост

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

2
DELETED
Автор поста оценил этот комментарий

Молодец, главное - писать код.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо, если будут советы и коменты, пиши = )

1
Автор поста оценил этот комментарий

Привет! Первое - вы молодец! Начать, это уже пол дела )

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


Опять же, имхо,  самое важное понимать "по какому принципу это работает" а не "что делает эта функция".

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо! Всегда рад советам и критики.