Lexover's blog

О web-разработке и анализе данных простыми словами

Непрерывная интеграция Python сервиса с помощью git

Данная статья является продолжнием статьи о создании сервиса на Pyhon. Итак мы реализовали некоторый сервис который запускается и в фоне выполняет некоторые задачи (следит за изменением цен на очредной девайс, ведет незатейливую переписку в Telegram, и т.п.). Мы разместили его на нашем сервере (например на RaspberyPi) где он и выполняет рутинные задачи. Но сервис должен разваться, мы вносим измене ...

Читать далее...
Создание демона Python с использованием Systemd

Недавно у меня возникла задача создать демон (фоновое приложение) реализованный на Python в системе Linux использующей Systemd. В поисках современного решения и родилась данная статья. Ранее для реализации демона выполнялась "демонизация" приложения Python, зачастую с помощью библиотеки python-daemon. Даже была создана спецификация pep-3143 для реализации демонов. Но на текущий момент времени с ис ...

Читать далее...
Профилирование приложений Python

При разработке приложений периодически у разработчиков возникает вопрос - по какой причине реализованный код работает медленно, и где теряетсются драгоценные время и ресурсы? Здесь на помощь приходят инструменты профилирования. В текущем посте рассмотрим возможности профилирования приложений реализованных на Python с помощью различных инструментов профилирования, а также рассмотрим средства позвол ...

Читать далее...
Тестируем Django с pytest.

В текущем посте мы рассмотрим как производится тестирование приложения Django с помощью фреймворка pytest, рассмотрим механизмы тестирования, дополнительные модули и плагины, которые значительно упрощают данный процесс, позволяют выполнить параллельный запуск тестов, проанализировать покрытие кода тестами. Данная статья основана на великолепной статье Дмитрия Чувардинского Testing Your Django App ...

Читать далее...
Технология RPC и ее реализацию с помощью Rabbit MQ и Pika.

В данном посте мы построим используя RabbitMQ распределенную RPC систему: клиент и массштабируемый RPC сервер. В качестве нагрузки используем медленный RPC сервис выполняющий рассчет числа Фибоначи. Технология RPC и ее применение. Цитируя Википедию >Удалённый вызов процедур (от англ. Remote Procedure Call, RPC) — класс технологий, позволяющих компьютерным программам вызывать функции или процедур ...

Читать далее...
Докеризация Django c PostrgeSQL, Gunicorn и Nginx.

Перевод статьи Michael Herman: Dockerizing Django with Postgres, Gunicorn, and Nginx. Это пошаговое руководство, в котором подробно описано, как настроить Django в связке с PostgreSQL для работы в контейнере Docker. Для производственных сред мы добавим Nginx и Gunicorn. Мы также рассмотрим, как обслуживать статические и мультимедийные файлы Django через Nginx. >Серия статей о Django на Docker: > ...

Читать далее...
Разгоняем Python с помощью конкурентности параллелизма и asyncio.

Перевод статьи Jace Medlin: Speeding up python with concurrency parallelism and asyncio. Есть много причин, по которым ваши приложения могут работать медленно. Иногда это происходит из-за плохой алгоритмической конструкции или неправильного выбора структуры данных. Однако иногда это происходит из-за неподконтрольных нам сил, таких как аппаратные ограничения или особенности работы в сети. Вот где ...

Читать далее...
Как запускать периодические задачи в Celery

Перевод статьи Antonio Di Mariano: How to run periodic tasks in Celery. Недавно я столкнулся с необходимостью реализовать серию задач (tasks), которые будут запускаться периодически для выполнения некоторых заданий. Такой сценарий хорошо подходит для crontab, но я решил попробовать Celery и использовать Celery Beat. Назначение и преимущества Celery Прежде всего, давайте кратко рассмотрим, что т ...

Читать далее...
Построение графиков в Vue.js с использованием D3.js.

D3.js - библиотека для построения динамической интерактивной визуализации данных, используя SVG, HTML5 и CSS. D3 - сокращение Data-Driven Documents, что в переводе на русский - "документ управляемый данными". Нам предстоит создать компонент Vue.js, который будет динамически отображать данные в виде графика "японских свечей", при этом следует учесть, что как D3.js так и Vue.js выполняют манипуляции ...

Читать далее...
Интерактивная карта в Vue.js.

Есть задача разместить в приложении Vue.js интерактивную карту OpenStreet. Чем мы и займемся. Для работы нам потребуется установленный Vue.js. Библиотека для отображения карт, в качестве которой мы используем JS библиотеку Leaflet. И сервис с которого мы будем получать карты для отображения, в качестве которого мы используем Mapbox. А теперь обо всем по порядку: Создадим проект vue с помощью vue ...

Читать далее...