Information
- Rating
- 6,262-nd
- Location
- Краснодар, Краснодарский край, Россия
- Date of birth
- Registered
- Activity
Specialization
Бэкенд разработчик, Архитектор программного обеспечения
Ведущий
Python
PostgreSQL
Linux
Docker
Kubernetes
RabbitMQ
Elasticsearch
Странно, что никто не предложил просто оборачивать каждый тест в транзакцию, в после проверки результата сделать rollback. В этом случае в бд вообще ничего нового не запишется, спасибо MVCC.
Причём этот способ работает и для Django ORM, и для SQLAlchemy, и даже для peewee-async.
А ещё бд postgres можно вынести на tmpfs, и тогда fsync смысла трогать нет. Но работает, кажется, только под Linux.
Хорошо тема описана. Всё ещё жду продолжения...
Спасибо за столь содержательную статью по эксплуатации gunicorn. Хотя я всё чаще встречаю использование uvicorn. Насколько сильно практика работы с ним отличается? Имеет ли смысл там плодить треды (если они там есть) и процессы? Можно ли держать один воркер на контейнер?
У Postgres другая модель реализации транзакционности (MVCC), так что там норм. А если ещё for no key update, то вообще накладные расходы минимальны.
Только я не в Москве, а в Краснодаре. И проблем пока ещё с WireGuard внутри РФ не было. Сервер в Москве, роутинг от мобильного оператора в Ростове.
Далее - сам headscale/tailscale имеет под капотом чуть изменённый WG. Это можно обнаружить хотя бы потому, что он не создаёт отдельного сетевого интерфейса. Что там ещё поменяли - без понятия. Но повторюсь - пока работает стабильно. Ну, за исключением комендатского часа в виде белых списков.
Я написал комментарий чтобы показать ещё один способ решения проблемы. Хабр уникален тем, что многие обсуждения гораздо интересней и полезней самой статьи. Без применения оценки конкретно к Вашей - сам проброс портов мне пригождается в других ситуациях.
Извините, но вы не разобрались в вопросе. Tailscale - да, зарубежный, но его аналог headscale полностью open source и лежит на GitHub.
Поддержу. Зачем вся эта мешанина скриптов, если есть решение, специально созданное для решения этой проблемы. Не в РФ можно купить tailscale и радоваться простоте настройки (и давать доступ со многих устройств маме/жене/ребёнку); в РФ проще поднять собственный headscale и получить точно такую же свою инфраструктуру.
Очень хорошая разработка именно для Авито, я считаю. Следующим шагом надо заменить разработчиков на ИИ - глядишь багов будет поменьше. А потом и менеджеров - вдруг появится действительно нужный функционал. А на сдачу можно заменить и поддержку, всё равно от неё толку нет.
Здорово, конечно, но сколько эта ML будет жрать батарейки? И можно ли как-нибудь поэкономнее? Пишу, потому что Go съедает 50% за 20 минут в активном режиме (да, телефон старый, но рабочий); а окно курьера Еды грузит 1 ядро CPU.
А быстро у вас модераторы читают!
Хех, я в Т-Банк так собес проходил (мне 38, шёл на техлида). 5 собесов успешно, на system design уложился в 41 минуту... И тишина. Пингую HR с вопросами как там дальше - говорит ищут команду. Ну ладно, жду. А пока предлагаю пройтись на SRE. 2 собеса, оба успешно. И ноль офферов. Зачем только звали? Команду не нашли, а на SRE з/п сильно ниже ожиданий.
Но, справедливости ради, на SRE собес гораздо интереснее, чем на python. Мы даже с интервьювером после остались поболтать и насоветовали друг другу материалов :)
Так а где код? Как мне это переиспользовать? В чём ценность статьи тогда?
У меня пяток пет-проектов, но логия отправляю, внезапно, в облачный Sentry. Настраивать ничего не надо, места достаточно, визуализация простая есть. Так что малыми силами решил проблему. Но для production-решения, конечно же, не подойдёт.
У него их там аж на 4 поста набралось: один, два, три, четыре. Просто на днях как раз зачитывался его блогом.
Наверно, очень здорово, но картинки на imgur не грузятся.
Ну 50 потоков можно и в тредах запускать. В python 3.14 появились саб-интерпретаторы, которые спускают GIL на уровень потока, а не всего процесса. Так что InterpreterPoolExecutor(max_workers=50) будет делать примерно то же самое.
Вот серьёзно?! Такими статьями интернет завален, нового ноль. Пожалуйста, не надо план выполнять - если не о чем писать, то просто не пишите.
Ценность такого материала - в примерах. Их тут нет. Пожалуйста, доработайте статью - пользы будет на порядок больше.
Спасибо, работает. Только на 104 строке опечатка, должно быть `for classeses in self.class_funct_def:`. Но схема всё равно получается нечитаемой. Стрелочки слишком длинные, блоки маленькие.
Посмотрите в сторону plantuml. У него под капотом тот же graphviz, но сам рендер получается приятнее.
Ух, я даже специально на комменты подпишусь :popcorn: