Небольшая подборка инструментов стека Python
Шорт-лист инструментов стека Python от технического директора, которые применяются его командой на практике
5К открытий5К показов
Богдан Евстратенко
технический директор компании nlogic
В этой статье я хочу поделиться своим шорт-листом инструментов стека Python, которые я и моя команда используем в повседневной работе и готовы рекомендовать другим специалистам.
Fastapi
Наш основной фреймворк на питоне. Изначально мы использовали flask-restplus, но довольно быстро стало понятно, что swagger-документация у него ограниченная, да и io будет большим.
Если с io проблема была ясна, то с документацией не очень. Нам была нужна тщательная и максимально подробная документация, при этом не углубляясь в swagger как таковой, а просто писать код (мы же все-таки на питоне). В очередной выходной, нагугливая что происходит в мире оупенсорса, наткнулся на fastapi. Разработчики позиционировали его как легкое, производительное и production-ready решение. Переписав на него свой pet project, точно понял, что он нам подходит по всем нашим хотелкам:
- документация генерируется из кода. Причем, если любишь оперировать более абстрактными объектами, то все становится еще удобнее;
- поддержка как корутин, так и обычных функций. Не завязываем себе руки event loop’ом;
- много батареек из коробки: jwt авторизация и не только, сокеты.
В общем, отличный инструмент.
Dramatiq
Если кто-то говорит о rabbitmq, то де-факто стандартный фреймворк в питоне — Сelery. У него большое коммьюнити, есть поддержка в разных веб-фреймворках, много проектов на нем, но основной минус, как мне кажется — перегруженность. Так как нам не нужна была сложная логика в этом месте, то, пройдя этап тестирования пет-проектом, было решено попробовать Dramatiq. Он легковесный, понятный, не перегружен как Сelery и в целом подходил под нашу идею «не усложняй». Забегая вперед скажу, что сейчас мы от него отказываемся в пользу своего решения на pika, захотелось больше контроля :).
Aerospike
Центральная база данных, через которую общаются все паблишеры, консьюмеры и сервисы системы распознавания.
Нам нужна была быстрая ACID NOSQL база данных, через которую можно было бы синхронизировать работу всех воркеров, например, чтобы одна группа воркеров не начинала обработку, если предыдущая еще не закончила, потому что процессинг следующей зависит от результатов предыдущей. Эту базу легко поддерживать, масштабировать, к тому же, в части системы она уже использовалась, так что выбор был очевиден.
Postgresql
Основное наше хранилище данных, используем везде :). Очень любим партиции!
Clickhouse
Небезызвестная аналитическая СУБД от Яндекса, используем для агрегирования данных: строим аналитику, дашборды, контролируем общее время распознавания и прочее.
Yargy
Yargy – набор грамматик и правил для извлечения фактов из неструктурированного текста.
У нас есть свой модуль, с помощью которого мы вытаскиваем разные сущности: имена, фамилии, телефоны, суды, номера ИНН и т.д. Этот модуль написан на основе Yargy. Правда, мы его сильно доработали :).
Sklearn, Keras, Tensorflow
Наши основные фреймворки для задач классификации (и по изображению, и по тексту). С помощью них мы точнее и лучше понимаем о чем говорится в тексте, какой тип документа перед нами и что с ним делать.
5К открытий5К показов