Как стать автором
Обновить

Решение проблемы «падения» процессов в приложении, работающее 24/7 в режиме мультипроцессинга

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 2K
Python *
Кейс

Есть приложение, в котором выполняет несколько функций, например, сбора данных из различных источников, их обработки и помещения результатов в БД. Приложение, по задумке, должно работать 24/7, чтобы в любой момент можно было подключиться к БД и получить свежайшую информацию.

Но вот незадача... Вроде бы весь код отлажен, работа приложения стабильна, но в какие‑то моменты замечается, что «бах» и процесс пропал. Ни ошибки в логах, ни сигналов, ничего нет. И как ловить, не очень понятно, а работа стоит и надо как‑то запускаться. На отладку нет много времени.

Решаем
Всего голосов 13: ↑5 и ↓8 -3
Комментарии 20

PyCon Russia 2021 пройдет 5-6 сентября. Принимаем заявки на доклады

Время на прочтение 3 мин
Количество просмотров 987
Блог компании IT-People Python *Django *Big Data *Конференции

Этот PyCon Russia проведем в стиле (пост)апокалипсиса :) Предугадать события невозможно, но сейчас подготовка идет полным ходом: программа наполовину собрана, спикеры готовятся, огромная база отдыха на берегу Клязьменского водохранилища забронирована. Смотрите, какие темы ждем в этом году, успевайте подавать заявки и выступите на самой большой и душевной русскоязычной конференции питонистов.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 2

Прокачаться в асинхронном программировании на Python за 6 недель

Время на прочтение 1 мин
Количество просмотров 1.1K
Блог компании Southbridge

Через два дня стартует курс по асинхронному программированию на Python от нашего партнёра KTS. Его можно пройти за полтора месяца, если заниматься 8–16 часов в неделю.

Этот курс — маст хев для тех, кто хочет прокачать харды и стать специалистом, который не боится сложных задач. Асинхронное программирование используется для высоко­нагруженных проектов и микросервисов, его спрашивают на собеседованиях в технологически развитых компаниях.

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Комментарии 0

10-й поток бесплатных курсов фронтенда и бэкенда в школе Metaclass

Время на прочтение 1 мин
Количество просмотров 1.3K
Блог компании KTS Python *ReactJS *Учебный процесс в IT

Всем привет!

Школа Metaclass запускает 10-й поток бесплатных курсов. Курсов традиционно два: frontend и backend. Оба стартуют 6 февраля.

Курсы рассчитаны на тех, кто уже немножко разбирается. Формат соответствующий: дедлайны, домашние задания, выпускные проекты. Подробнее о занятиях рассказали наши студенты:

Что получите после обучения: 
 — как минимум поймете свои слабые места
 — как максимум серьезно прокачаетесь
 — всего за месяц изучите реальные технологии, которые применяются на практике и в индустрии в целом, и у нас в компании.

Записаться можно по ссылкам:
📌 Начинающий React-разработчик
📌 Начинающий Backend-разработчик на Python

Далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 0

Вышел Tornado Web Server 2.0 RC

Время на прочтение 1 мин
Количество просмотров 1.8K
Python *

Основные изменения:


  • Автоматически добавляются escape-символы при выводе в шаблоны
  • Стандартная реализация AsyncHTTPClient теперь simple_httpclient.
  • Поддержка Python 3.2.


Минорные изменения:


  • Новые теги шаблонизатора:
    — {% autoescape ...%} управление добавлением escape — символов
    — {% raw… %} убрать escape-символы
    — {% module… %} для вызова UIModules
  • {% module Template(path, **kwargs) %} теперь может быть использовано для вызова другого шаблона с независимым пространством имен
  • Все вызовы IOStream callbacks теперь осуществляются напрямую в IOLoop через add_callback.
  • HTTPServer теперь поддерживает IPv6. Для отключения нужно передать параметр family=socket.AF_INET в HTTPServer.bind().
  • HTTPClient теперь поддерживает IPv6, если у запроса установлен параметр allow_ipv6=True
  • RequestHandlers теперь может использовать кодировки, отличные от utf-8 для параметра запроса путем переопределения decode_argument()
  • Улучшена производительность, особенно для приложений, использующих много IOLoop timeouts
  • HTTP OPTIONS метод теперь не требует XSRF token.
  • Вывод в JSON (RequestHandler.write(dict)) теперь устанавливает Content-Type application/json
  • вычисление Etag теперь может быть настроено или отключено путем переопределения RequestHandler.compute_etag
  • USE_SIMPLE_HTTPCLIENT больше не поддерживается, вместо него используйте AsyncHTTPClient.configure.

Берем на GitHub
Всего голосов 26: ↑20 и ↓6 +14
Комментарии 16

Определение части речи слов в русском тексте (POS-tagging) на Python 3

Время на прочтение 9 мин
Количество просмотров 91K
Python *Natural Language Processing *
Пусть, дано предложение “Съешьте еще этих мягких французских булок, да выпейте чаю.”, в котором нам нужно определить часть речи для каждого слова:

[('съешьте', 'глаг.'), ('еще', 'нареч.'), ('этих', 'местоим. прил.'), ('мягких', 'прил.'), ('французских', 'прил.'), ('булок', 'сущ.'), ('да', 'союз'), ('выпейте', 'глаг.'), ('чаю', 'сущ.')]

Зачем это нужно? Например, для автоматического определения тегов для блог-поста (для отбора существительных). Морфологическая разметка является одним из первых этапов компьютерного анализа текста.
Узнать, как это реализовать на Python 3
Всего голосов 82: ↑81 и ↓1 +80
Комментарии 74

Ответ на Python vs Ruby

Время на прочтение 2 мин
Количество просмотров 35K
Python *
Пользователь eyeofhell недавно написал статью Python vs Ruby.
Знатный холивар получился. Не могу не поддержать. Сначала думал написать в комментарии — но ответ вышел слишком объемным.

Читайте дальше
Всего голосов 117: ↑105 и ↓12 +93
Комментарии 147

Конвертируем Selenium веб-драйвер для Python 3.x

Время на прочтение 3 мин
Количество просмотров 2.6K
Разработка веб-сайтов *Python *
Из песочницы
Итак, вы задались целью отладить своё веб-приложение. Вам хочется, чтобы браузер «сам тыкал» на кнопочки, ходил по ссылкам и при этом ещё и проверял состояние элементов. Словом хочется вам интеграционного тестирования, чтобы некий скрипт задавал сценарий действий пользователя и при этом параллельно проверял состояние элементов и изменения в базе данных.

Допустим вы находите или где-то уже слышали, или даже давно хотели попробовать специальный инструментарий для этих дел, зовущийся Selenium WebDriver. Вы идёте на сайт Selenium и радостно прыгаете от восторга: поддерживается ваш любимый скриптовый язык Python! Но увы, как и в случае с Django у разработчиков ещё не дошли руки до Python 3.x. Так что все вкусные синтаксические куски рафинада, а также встроеная поддержка UTF-8 по умолчанию не поддерживаются.

Однако, вооружившись знаниями о различиях между Python 2 и 3, а также стандартной утилитой 2to3.py мы в два счёта поборем всё то, что мешает нашему счастью и всеобщему прогрессу в разработке тестовых скриптов для интеграционного тестирования.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 3

Префиксные деревья в Python

Время на прочтение 6 мин
Количество просмотров 11K
Python *
Доделал на днях питонью библиотеку datrie, реализующую префиксное дерево (см. википедию или хабр), спешу поделиться.

Если вкратце, то можно считать, что datrie.Trie — это замена стандартному питоньему dict, которая при определенных условиях (ключи — строки) занимает меньше памяти, имеет сравнимую скорость получения отдельного элемента и поддерживает дополнительные операции (получение всех префиксов данной строки, получение всех строк, начинающихся с данной строки и др.), которые работают примерно так же быстро, как и «словарные» операции.

Работает под Python 2.6-3.3, поддерживает юникод, лицензия LGPL.

Читать дальше →
Всего голосов 59: ↑58 и ↓1 +57
Комментарии 18

Запускаем PyBrain на Python 3

Время на прочтение 4 мин
Количество просмотров 22K
Python *
Из песочницы
Доброго времени суток, %username%!

Хочу поведать историю о портировании на python3 библиотеки PyBrain, описанной недавно на хабре.
Подробности под катом.
Читать дальше →
Всего голосов 21: ↑18 и ↓3 +15
Комментарии 5

Мысли о Python 3

Время на прочтение 16 мин
Количество просмотров 80K
Python *Программирование *
Из песочницы
Предлагаю вашему вниманю пересказ замечательной статьи автора Jinja2, Werkzeug и Flask, соавтора Sphinx и Pygments Армина Ронахера. Я получил огромное удовольствие разбирая исходные коды его творений и очень многое для себя почерпнул. Армин пишет отличные фреймворки, и как никто другой может разъяснить, чем чреват переход с Python 2 на Python 3 и почему его не так легко осуществить.

Читать дальше →
Всего голосов 126: ↑117 и ↓9 +108
Комментарии 124

Habrachat бросил ARM и теперь на Heroku

Время на прочтение 1 мин
Количество просмотров 4.4K
Я пиарюсь
В прошлой статье я писал про тестирование ARM сервера при помощи самописного чата на Python ( www.habrachat.org ).
Но как выяснилось несколько дней назад:
К сожалению, пока заканчиваем работу с этим проектом. Возможно в будущем появятся другие решения от Рикор и мы их с удовольствием попробуем внедрить. Такая информация обязательно будет выложена на хабре и у нас на сайте.

По хорошему меня попросили выехать за 2 дня (а на сервере я смог разместить много тестовых проектов кроме чата). В итоге я решил переехать на heroku. Подробности под катом.
Читать дальше →
Всего голосов 11: ↑8 и ↓3 +5
Комментарии 12

Быстрые аналоги популярных библиотек для Python

Время на прочтение 2 мин
Количество просмотров 21K
Python *
Так получилось, что несколько месяцев я пытался серьёзно использовать в качестве сервера, железку на ARM процессоре.
Об этом я писал тут и тут.
Производительности мне часто не хватало, и я находил и искал различные альтернативы, часто активно использующие C/C++. Парочка библиотек под катом.

Читать дальше →
Всего голосов 34: ↑18 и ↓16 +2
Комментарии 9

Один вариант использования аннотаций

Время на прочтение 4 мин
Количество просмотров 13K
Ненормальное программирование *Python *Программирование *
Сразу хочу объявить, что здесь под аннотациями подразумеваются НЕ декораторы. И я не знаю по какой причине декораторы иногда именуют аннотациями.

Недавно я открыл для себя что в питоне есть фишка, которую я очень давно искал — аннотации к функциям. Это — возможность пихнуть в декларацию функции какую-либо информацию по каждому отдельному её параметру.

Вот каноничный пример из PEP:

def compile(source: "something compilable",
            filename: "where the compilable thing comes from",
            mode: "is this a single statement or a suite?"):
    ...


Там же, чуть ниже, приводятся примеры, которые дают понять, что комментирование параметров — не единственное возможное использование данной фичи. Это натолкнуло меня на мысль об одной старой беде, которая досаждала моей нервной системе уже приличное время. А именно — получение данных из форм во Flask.

Читать дальше →
Всего голосов 26: ↑24 и ↓2 +22
Комментарии 7

Удаленное управление VLC player’ом при помощи Arduino и Python

Время на прочтение 4 мин
Количество просмотров 15K
Python *
Из песочницы
Добрый день, уважаемые читатели.

Я давно интересовался Arduino, и вот однажды решился на покупку этой замечательной платформы. После недолгих поисков приобрел небольшой Arduino kit, в котором, помимо прочего, был ИК-датчик и пульт к нему. Изучив примеры из мануала, понял, что настало время придумать что-то свое. В итоге я решил сделать удаленное управление VLC player’ом, используя магию Arduino и Python3.
Читать дальше →
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 2

Thunderargs: практика использования. Часть 1

Время на прочтение 6 мин
Количество просмотров 5.6K
Разработка веб-сайтов *Python *Программирование *
Туториал
Недавно я писал пост про то, как был придуман и написан thunderargs. Сегодня я раccкажу о том, как его можно применять.

Напомню, что эта штука предназначена для обработки параметров функции при помощи аннотаций. Например, так:

OPERATION = {'+': lambda x, y: x+y,
             '-': lambda x, y: x-y,
             '*': lambda x, y: x*y,
             '/': lambda x, y: x/y,
             '^': lambda x, y: pow(x,y)}

@Endpoint
def calculate(x:Arg(int), y:Arg(int),
                       op:Arg(str, default='+', expander=OPERATION)):
    return str(op(x,y))


Постараемся по ходу тутора решать вполне определённые проблемы, а не какие-то эфемерные задачки. Ну а теперь — к делу.

Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Комментарии 2

Python, каким бы я хотел его видеть

Время на прочтение 11 мин
Количество просмотров 46K
Блог компании VK Python *Программирование *
Перевод
Всем известно, что мне не нравится третья версия Python и то, в каком направлении развивается этот язык программирования. За последние несколько месяцев я получил много писем с вопросами о моём видении развития Python и решил поделиться своими мыслями с сообществом, чтобы, по возможности, дать пищу для размышлений будущим разработчикам языка.

Можно сказать совершенно точно: Python не является идеальным языком программирования. На мой взгляд, основные проблемы вытекают из особенностей интерпретатора и мало связаны с самим языком, однако все эти нюансы интерпретатора постепенно становятся частью самого языка, и поэтому они так важны.

Я хочу начать наш разговор с одной странности интерпретатора (слоты) и закончить его самой большой ошибкой архитектуры языка. По сути, эта серия постов является исследованием решений, заложенных в архитектуре интерпретатора, и их влияния как на интерпретатор, так и на сам язык. Я считаю, что с точки зрения общего дизайна языка такие статьи будут выглядеть гораздо интереснее, чем просто высказывание мыслей по улучшению Python.
Читать дальше →
Всего голосов 97: ↑87 и ↓10 +77
Комментарии 37

Типы данных наносят ответный удар

Время на прочтение 12 мин
Количество просмотров 33K
Блог компании VK Python *Программирование *
Перевод
Это вторая часть моих размышлений на тему «Python, каким бы я хотел его видеть», и в ней мы более подробно рассмотрим систему типов. Для этого нам снова придётся углубиться в особенности реализации языка Python и его интерпретатора CPython.

Если вы программист на языке Python, для вас типы данных всегда оставались за кадром. Они где-то там существуют сами по себе и как-то там взаимодействуют друг с другом, но чаще всего вы задумываетесь об их существовании только когда возникает ошибка. И тогда исключение говорит вам, что какой-то из типов данных ведёт себя не так, как вы от него ожидали.

Python всегда гордился своей реализацией системы типов. Я помню, как много лет назад читал документацию, в которой был целый раздел о преимуществах утиной типизации. Давайте начистоту: да, в практических целях утиная типизация — хорошее решение. Если вы ничем не ограничены и нет нужды бороться с типами данных по причине их отсутствия, вы можете создавать очень красивые API. Особенно легко на Python получается решать повседневные задачи.

Практически все API, которые я реализовывал на Python, не работали в других языках программирования. Даже такая простая вещь, как интерфейс для работы с командной строкой (библиотека click) просто не работает в других языках, и основная причина в том, что вам приходится беспрестанно бороться с типами данных.

Не так давно поднимался вопрос добавления статической типизации в Python, и я искренне надеюсь, что лёд, наконец, тронулся. Постараюсь объяснить, почему я против явной типизации, и почему надеюсь, что Python никогда не пойдёт по этому пути.

Читать дальше →
Всего голосов 66: ↑53 и ↓13 +40
Комментарии 38

Написание framework на asyncio, aiohttp и мысли про Python3 часть первая

Время на прочтение 18 мин
Количество просмотров 53K
Разработка веб-сайтов *Python *Программирование *NoSQL *MongoDB *
Туториал

Года полтора назад встал вопрос совместимости написанного кода с Python3. Поскольку уже стало более менее очевидно, что развивается только Python3 и, рано или поздно, все библиотеки будут портированы под него. И во всех дистрибутивах по умолчанию будет тройка. Но постепенно, по мере изучения, что нового появилось в последних версиях Python мне все больше стал нравится Asyncio и, скорее, даже не Acyncio а написанный для работы с ним aiohttp. И, спустя какое то время, появилась небольшая обертка вокруг aiohttp в стиле like django. Кому интересно что из этого получилось прошу под кат.


Вторая часть


Введение
Краткий обзор других фреймворков на базе aiohttp
1. Структура
2. aiohttp и jinja2
3. aiohttp и роуты
4. Статика и GET, POST параметры, редиректы
5. Websocket
6. asyncio и mongodb, aiohttp, session, middleware
7. aiohttp, supervisor, nginx, gunicorn
8. После установки, о примерах.
9.RoadMap

Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Комментарии 12

Анимированные QR коды

Время на прочтение 1 мин
Количество просмотров 19K
Open source *Python *Обработка изображений *
В свободном доступе появилась реализация интересных графических или анимированных QR кодов.

Вы можете применить эту идею в ваших проектах. Например, предоставить возможность пользователям создавать QR коды из аватарок, использовать в маркетинге или продвижении.

Github: github.com/sylnsfar/qrcode
Веб-версия: www.amazing-qrcode.com

Примеры анимированных QR кодов, GIF 1Мб
image image
Всего голосов 21: ↑17 и ↓4 +13
Комментарии 17
1