Хочу стать программистом ч.3
Спасибо всем за поддержку и теплые слова, написанные в комментариях к прошлому посту. Мне было приятно читать = )
Ссылку на репозиторий скину в конце статьи, в дальнейшем планирую писать новый пост примерно раз в неделю с новыми фичами, а на данный момент опубликую пока то что есть.
Итак мы будем делать клиент-серверное приложение. Сперва мой выбор пал на стандартную библиотеку питона socketserver, но он разрывает связь после первого обмена данными, поэтому реализация будет на socket
Начнем с сервера (код):
Большинство кода являет собой копипасту из документации по модулю selectors.
Cуть в том, что мы слушаем сокет и в бесконечном цикле слушаем события от модуля selectors, заранее вешая туда обработчик accept. Таким образом мы можем подключаться одновременно с нескольких клиентов.
Из интересного можно отметить код split_input_data, где мы регуляркой разбиваем входящие данные на кортеж.
Код клиента вообще прост как 2 копейки(код):
-просто подключается
- ждем ввод
- пишем ответ
Сама структура для хранения сейчас представлена в виде словаря, напомню главная цель данной активности - чтоб работало, о скорости подумаем потом = )
Записывать свое состояние пока не умеет, просто хранит словари в памяти и отдает данные по ключу.
Реализация опять же проста на данный момент. Код
На данный момент основная проблема это то как это все можно протестировать, автоматизировать?
Как замерить скорость и сравнить с реальным redis?
Полное непонимание того как пишутся распределенные приложения.
Ссылка на гит - https://github.com/straus123/strais
Как обычно рад адекватной и не очень критике.
Спасибо!
Программирование на python
636 постов11.8K подписчик
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу