
Tishka17
31.01.2019
11:02:47
ну concurrent не получишь

Alex
31.01.2019
11:03:01

Tishka17
31.01.2019
11:03:44
concurrent как раз получишь не?
ну почему, переключение происходит только на IO, поэтому безопасно писать в мапу без лока. А вот race condition можно и получить


Bogdan (SirEdvin)
31.01.2019
11:03:44
Ты был или смотрел доклады Селиванова и Светлова с pycon-ru 2018? Сами коре-девелоперы называют его ужасным и просят прощения за поломанную совместимость от версии к версии
Нет, будет классно, если найду.
Но мнение автора не всегда объективное. Вот мне недавно скидывали видео, где авторы называют dataclass классными, а на мое мнение, они полный шлак.
Тот же typing, не видел, что бы авторы где-то извинились за то, что решили поломать всю совместимость между 3.6 и 3.7 проверку типов еще сложнее, ведь теперь надо впиливать костыли на проверки "а какая версия питона?". Авторы mypy вообще какое-то время считали, что "мы не будем делать систему плагинов, нам лень стабилизировать внутрение api", поэтому у них избранные пакеты удастаивались костылей в репе, а остальные должны ставить type: ignore.
В противовес этому asyncio + aiohttp как-то нормально работает и при переходе с 3.6 на 3.7 я ничего не переписывал. Может повезло, но все-таки оно работает

Google

Bogdan (SirEdvin)
31.01.2019
11:04:04

Tishka17
31.01.2019
11:04:36
race condition - это как правило нарушение логики

Alex
31.01.2019
11:04:37

Tishka17
31.01.2019
11:05:11
хз как оно

Alex
31.01.2019
11:05:25
ок, сорян, я пожалуй спутал с race condition.

Jentry
31.01.2019
11:06:11
Нет, будет классно, если найду.
Но мнение автора не всегда объективное. Вот мне недавно скидывали видео, где авторы называют dataclass классными, а на мое мнение, они полный шлак.
Тот же typing, не видел, что бы авторы где-то извинились за то, что решили поломать всю совместимость между 3.6 и 3.7 проверку типов еще сложнее, ведь теперь надо впиливать костыли на проверки "а какая версия питона?". Авторы mypy вообще какое-то время считали, что "мы не будем делать систему плагинов, нам лень стабилизировать внутрение api", поэтому у них избранные пакеты удастаивались костылей в репе, а остальные должны ставить type: ignore.
В противовес этому asyncio + aiohttp как-то нормально работает и при переходе с 3.6 на 3.7 я ничего не переписывал. Может повезло, но все-таки оно работает
где-то с 30ой минуты https://www.youtube.com/watch?v=3rSAtD2gKQE

Tishka17
31.01.2019
11:06:59
Кстати, а у нас нет много…эээ…поточного asyncio?

Alex
31.01.2019
11:07:03
нужно внутривенное вливание кофе

Bogdan (SirEdvin)
31.01.2019
11:07:34

Tishka17
31.01.2019
11:07:45

Jentry
31.01.2019
11:07:57

LighteR
31.01.2019
11:08:20

Google

Tishka17
31.01.2019
11:08:23

Bogdan (SirEdvin)
31.01.2019
11:08:38
ага
Такое можно сделать на процессах, но вот передавать корутину из процесс в процесс это сложновато

Alex
31.01.2019
11:08:44

LighteR
31.01.2019
11:08:51

Alex
31.01.2019
11:09:05
вот с gevent было веселей

LighteR
31.01.2019
11:09:07
sleep, например )

Tishka17
31.01.2019
11:09:14
вообще, надо бы потыкать уже реалньо asyncio, а то я все теоретически чет

Bogdan (SirEdvin)
31.01.2019
11:09:37
Очень советую, так сказать)
Если веб проект, то как я понимаю, лучше всего взять fastapi
Выглядит очень сочно
Но не тыкал, я пока на sanic все еще

Tishka17
31.01.2019
11:10:05
увы, у меня уже go

Alex
31.01.2019
11:10:11
мы тут щас в проект притянули кусок на aiohttp

Jentry
31.01.2019
11:10:15

Alex
31.01.2019
11:10:16
микросервисом
обкатываем

Bogdan (SirEdvin)
31.01.2019
11:10:25

Alex
31.01.2019
11:10:54

Jentry
31.01.2019
11:11:46

Tishka17
31.01.2019
11:12:03

Google

Alex
31.01.2019
11:12:08
есть ненулевой шанс что и у меня скоро будет
но если честно я тут тыкал тестовое задание на Go и меня блевать тянет
даже на задаче сраного http сервера все в один голос рассказывают как делать подключение в базе через глобальный объект.
DI? не не слышали, а если слышали то это делается через какие-то дикие костыли сбоку.

Tishka17
31.01.2019
11:15:05

Terminator
31.01.2019
11:15:17
@nadirq будет жить. Поприветствуем!

Alex
31.01.2019
11:15:32

Terminator
31.01.2019
11:15:39
@asdxsw будет жить. Поприветствуем!

Егор
31.01.2019
11:16:29
а зачем отступы в питоне?

Николай
31.01.2019
11:16:39

Terminator
31.01.2019
11:16:42
@keipa будет жить. Поприветствуем!

Alex
31.01.2019
11:16:43

Bogdan (SirEdvin)
31.01.2019
11:17:00
К счастью, у нас маленькая компания, меня го не ждет) Разве что когда rust немного стабилизируется, попробую его подучить

Alex
31.01.2019
11:17:08

Егор
31.01.2019
11:17:10

Alex
31.01.2019
11:17:34
@Tishka17 кандидат на RO \ банхаммер

Jentry
31.01.2019
11:18:35

Tishka17
31.01.2019
11:19:28
DI - это не про инструменты, а про связность кода

El Mariachi
31.01.2019
11:19:45

Jentry
31.01.2019
11:20:35

Aragaer
31.01.2019
11:21:09
это конкретная реализация

Google

Aragaer
31.01.2019
11:21:38
инъекцию можно делать разными способами и далеко не все они требуют наличия DI-фреймворка (не люблю фреймворки)
просто тупо руками передать в конструктор или сеттер экземпляр того, что требуется - и оно работает

Jentry
31.01.2019
11:22:10
да, можно, в питоне вообще импортом можно делать)

Tishka17
31.01.2019
11:22:48

Aragaer
31.01.2019
11:23:39
собственно провайдер зависимостей это уже паттерн service locator по-моему

Bogdan (SirEdvin)
31.01.2019
11:23:50

Aragaer
31.01.2019
11:24:11
и опять же, может возникнуть желание сделать сам провайдер синглтоном, а можно его передавать как зависимость

Sfy
31.01.2019
11:25:28

Tishka17
31.01.2019
11:25:59

Егор
31.01.2019
11:26:06

Aragaer
31.01.2019
11:26:26
а в тестах делают специальный провайдер с тестовыми сервисами/заглушками

Jentry
31.01.2019
11:26:27

Tishka17
31.01.2019
11:27:55

Aragaer
31.01.2019
11:28:01
да
это для интеграционных и behavior тестов
хотя .. зависит от апи юнита. Мало ли, у тебя юнит это "передать туда такого-то, а все методы что-то над этим товарищем делают"
и тебе надо сенсить, что тестируемые методы действительно выполняют нужные действия над переданным внутрь объектом
тогда можно засунуть мок
но когда надо засунуть более одного мока - то есть тестируемый объект должен "достать результат из метода А мока1, передать его в метод Б мока2", то ... уже можно подумать о том, чтобы инжектить моков одной пачкой, особенно если для рабочего варианта используется тот же самый инструмент инжекта

Google

Terminator
31.01.2019
11:31:44
@amstir будет жить. Поприветствуем!
Виктор Мортид будет жить. Поприветствуем!

Bogdan (SirEdvin)
31.01.2019
11:41:07
Кстати, раз мы уже заговорили про DI. Я вот использую DI на основе импортов и classmethod. Насколько все плохо?)
То есть модели чисто для данных, вся логика хранится в "сервисах", которые я так вызываю

Tishka17
31.01.2019
11:43:00
Модели имхо норм