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